我在 Apache Ubuntu 16.04 服务器上有两个 Web 应用程序:
我想要安装单点登录服务 (SSO)。例如,用户登录 WordPress,然后当他访问 Django 网站时,他已经连接了。实际上我没有找到任何关于 WordPress 和 Django 之间 SSO 的信息。您知道该怎么做吗?
根据 SP 发起的 SSO 流程,用户尝试访问 SP。由于用户未经身份验证,因此他会被重定向到 IDP,在其中输入凭据、成功登录后,IDP 在用户的浏览器中设置 cookie(在 IDP 的域下),并使用 SAML 响应将用户重定向回 SP。一旦 SP 验证了 SAML 响应,它就会创建自己的 cookie/令牌,并在 sp 域下的用户浏览器中设置。
后续请求中理想情况下应该发生什么:
如果建议选项 1,从安全角度来看是否可以,因为登录后 SP 和 IDP 之间不会进行进一步请求的通信。
如果建议使用选项 2,则在每个请求中调用 IDP 都会产生开销,这可能会影响 SP 的性能。
请在这里提出理想的流程。
我使用NodeSSPI在 TypeScript 中进行了单点登录的概念验证。这有效,我获得了登录我们公司 AD 域的用户名 - 无需输入任何帐户信息或凭据。但我想详细了解这是如何实现的,因为它可以在 IE 和 Chrome 中开箱即用。我发现这篇关于 NTLM 的 MSDN 文章说:
我特别想知道第 1 步和第 2 步:这是在哪里发生的?例如,用户名如何传输到服务器?它是http请求的一部分吗?我查看了 Chrome 开发人员工具的请求,但看不到任何标头或其他信息,表明我的 AD 用户名已发送到服务器。
请注意:这些问题仅适用于用户未提供凭据的 SSO!因为当用户输入他的凭据时,这是很清楚的。
AuthServerWhitelist这两个 chrome 策略寄存器和之间有什么区别AuthNegotiateDelegateWhitelist?
当我试图自动登录内网时,当我发现这两个寄存器时,我开始怀疑。
首先我尝试了一下AuthServerWhitelist,但没有成功。
然后我设置了两者AuthServerWhitelist并且AuthNegotiateDelegateWhitelist它起作用了。
尽管我读到它们有两种不同的功能,但我现在看不出有什么区别。
预先非常感谢!
我是 Angular + Node 项目中 SAML SSO 集成的初学者。我浏览了许多与之相关的链接和论坛。然而,无法弄清楚,从哪里开始???。
仍在尝试找到一种在我的应用程序中实现 SAML SSO 的方法。
下面是场景:
就是这个!!!
我已完成 Active Directory 登录并已进入仪表板。但现在,我不知道,该做什么,怎么做,从哪里开始???
被困在这里了!!!我们将非常感谢您的帮助。
不久前,我致力于在 Web 应用程序中设置 SSO 用户身份验证。特定的 IdP 是 ADFS 服务器,但我认为这不是很重要。
配置应用程序的 SSO 设置时,我注意到需要 IdP 证书的指纹,而不是证书本身。现在,据我了解,应用程序使用指纹来验证已颁发的 SAML 令牌上的 IdP 签名。
问题是应用程序如何仅使用证书指纹来验证签名?它不需要证书的公钥,它是证书本身的一部分,但不是它的指纹的一部分?这个签名验证过程如何进行?
我们已将五个应用程序转换为通过 Azure SSO 进行身份验证。我们使用通过“使用 Azure Active Directory 进行身份验证”向导(在连接的服务窗格中)插入的默认代码来完成此操作。这些应用程序已发布并由我们的用户使用。从最终用户的角度来看,一切似乎都工作正常(没有人抱怨,并直接询问他们说这很棒,并且当我们测试时它对我们有用)
我们在 global.asax Application_error 中有日志记录代码,并且注意到我们每天都会记录多个与人们登录应用程序的时间相对应的错误。我想尝试弄清楚这是否正常,或者我们是否做错了什么,或者用户是否看到问题但没有报告/注意到。信息太少了,我被困住了。以下是我们日志中的错误代码。有任何想法吗?
System.Threading.Tasks.TaskCanceledException: A task was canceled.
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Microsoft.IdentityModel.Protocols.ConfigurationManager`1.<GetConfigurationAsync>d__24.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Owin.Security.OpenIdConnect.OpenIdConnectAuthenticationHandler.<ApplyResponseChallengeAsync>d__c.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Owin.Security.Infrastructure.AuthenticationHandler.<ApplyResponseCoreAsync>d__b.MoveNext()
--- End of stack trace from previous location where exception …Run Code Online (Sandbox Code Playgroud) azure single-sign-on asp.net-mvc-5 c#-6.0 visual-studio-2017
我有 2 个 JHipster 应用程序,每个应用程序都在一个子域(app1.domain.tld 和 app2.domain.tld)上运行。
在这两个应用程序中,用户都通过 Keycloak 登录。顺序如下:
如果用户已经登录域(*.domain.tld)的应用程序之一,自动登录用户(无需询问用户名和密码)的最佳方式是什么?
在了解 JSessionID 仅适用于生成它的应用程序之前,我尝试使用 JSessionID 作为全局令牌...
也许捕获 Keycloak 身份验证 cookie(在步骤 2 中返回)并在第二个应用程序上进行身份验证就可以解决问题?
从我在测试时看到的情况来看,在第一个应用程序上进行身份验证后,当我转到第二个应用程序时,Angular 401 HTTP 拦截器会使用会话令牌重定向到 keycloak 登录页面。因此,那时 Keycloak 应该看到我已经登录,并且应该将我重定向到我的第二个应用程序的主页。
我对吗 ?
我想寻求建议或标准方法来实现基于前端/后端架构的 SSO 登录。
目前,我需要实施第 3 方 SSO 登录。流程如下:
仅供参考,我的系统架构由前端(角度)和后端(rest api - 无状态)组成。基于以上案例,我可以想到两种集成方式:
方式一
方式2
方式1和方式2的区别在于“重定向URL”。SSO 登录完成后,它应该始终路由到前端还是后端?
请就推荐/标准实施向我提供建议。
顺便说一句,我尝试在网上查看但没有看到任何合适的建议。如果您找到了,请分享给我。再次感谢并感谢您的帮助。
我有一个与 Angular JS 一起使用的单页 MVC 应用程序。Angular 从我的 asp mvc 应用程序调用 api,包括登录。我想向我的应用程序添加单点登录
在转移到本地登录页面之前,我的角度检查“GetUserRoles”功能..
我做错了什么,所以 UserAccountApiController 中的 HttpContext.Current.GetOwinContext().Authentication.Challenge() 行无法打开 adfs sso 页面???
用户帐户Api控制器
[HttpPost]
public bool IsLogedInRoled(NR role)
{
if (User.Identity.IsAuthenticated)
{
if (!string.IsNullOrEmpty(role.role))
{
var isLogedInRoled = GetUserRoles().Select(x => x.ToLower()).Contains(role.role);
return isLogedInRoled;
}
return true;
}
HttpContext.Current.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = "~/" },
WsFederationAuthenticationDefaults.AuthenticationType);
return false;
}
Run Code Online (Sandbox Code Playgroud)
启动.cs
public class CustomeStartup : UmbracoDefaultOwinStartup
{
private static string realm = ConfigurationManager.AppSettings["ida:Wtrealm"];
private static string adfsMetadata = ConfigurationManager.AppSettings["ida:ADFSMetadata"];
private static string adfsWreply = …Run Code Online (Sandbox Code Playgroud)