1
15
我想你误解了单点登录的工作原理。 让我们考虑使用单一登录的website1和website2。 登录网站在IdentityProvider上创建。这是唯一出现登录屏幕的地方。 当用户访问website1并选择登录website1时,会将用户发送到IdentityProvider的登录屏幕。用户登录到IdentityProvider,它为其域删除了自己的登录cookie(并且可能允许用户保存其身份验证信息,这样就不会再次提示他们)。然后,它将浏览器重定向回website1,包括website1打开的请求中的一个令牌,从中获取身份信息并执行它自己的登录位(删除它自己的身份验证cookie,该cookie将持续其所需的时间)。 然后用户访问网站2并选择登录。WebSite2将用户跳转到IdentityProvider,后者已经知道用户是谁,如果用户选择保存登录信息,则会自动进行身份验证,然后使用WebSite2打开的另一个令牌重定向回WebSite2,然后执行自己的登录位。 它周围有一堆安全性,将令牌限制在特定的网站上,只允许将令牌发送到白名单网站等。 为了解决你的问题
|
2
3
官方的微软方法是通过Active Directory联合服务(它用AD身份验证包装SAML)。这有您正在寻找的特性——但对于公共Web应用程序来说,可能太重了。 |
3
3
我假设您不想在Active Directory等中使用Windows身份验证。一种方法是使用查询字符串上的安全令牌将一个经过身份验证的会话移交给另一个。 两个应用程序都使用相同的公共加密密钥对安全令牌进行编码/解码。如您所说,如果您在站点之间有有限的、预先定义的转换链接,这很好地工作,但是如果您希望能够在应用程序之间使用任何页面链接,则需要动态生成这些URL,以便它们包含令牌。 处理超时的方法是,安全令牌还包含一个到期时间。每个页面请求或在应用程序之间创建新链接时,都会生成新的安全令牌。 通常,安全令牌包含一个用户ID和一个超时,登录检查程序返回用户ID,或者如果超时时间已过,返回空值。 正确、安全地编码并不是一个快速的解决方案。也许你可以在代码项目上找到一个预建的? |
4
1
您可以根据应用程序对不同的应用程序使用不同的SSO机制。
但是,我可以看到” 箱外单粒子群算法 来自Live、Google、Yahoo、Facebook等的服务,通过支持SAML提供认证。这将帮助我们摆脱维护自己的SSO服务实现的问题。 如果需要基本了解SSO的工作原理,可以参考 here |
5
0
几年前,微软在企业内部做了一篇关于它的论文——我们建立了样本,但从未真正实现过。- Single Sign-on |
6
0
通过使用OAuth和社会提供者查看此链接,它提供了许多已经融入.NET的身份验证功能。 Microsoft training video on OAuth and single sign on with social providers |