联合身份标识:使用WIF实现ASP.NET被动身份验证
一个域中的多个应用程序也可能共享一个会话 Cookie,这种情况下,可以将 Cookie 路径设置为“/”。
如果会话 Cookie 到期,浏览器会从缓存中将它删除,用户将再次被重定向到 STS 进行身份验证。另外,如果与会话 Cookie 关联的已颁发令牌已到期,WIF 将重定向到 STS 申请新的令牌。 注销更为明确,通常由用户主动执行。单一注销是 WS-Federation 规范的可选功能,该功能建议 STS 还应通知它颁发过注销请求令牌的其他 RP 应用程序。这样,会从用户在单一登录会话期间浏览到的所有应用程序中删除会话 Cookie。在更复杂的包含多个 STS 的方案中,接收到注销请求的主 STS 还应通知其他 STS 执行相同的操作。 为便于讨论,我将着重介绍为实现联合单一注销需要对 RP 执行的操作。您可以将 FederatedPassiveSignInStatus 控件添加到任何需要支持登录或注销的页面,该控件将自动指示其状态。登录之后,该控件会显示一个用于注销的链接、按钮或图像。 单击该控件时,它将根据 SignOutAction 属性处理注销,该属性可以是 Refresh、Redirect、RedirectToLoginPage 或 FederatedPassiveSignOut。如果是前三个属性,则会删除应用程序的会话 Cookie,但不会通知 STS 有关注销请求的信息。如果选择 FederatedPassiveSignOut 设置,该控件将调用 WSFederationAuthenticationModule 的 SignOut。这可以确保从应用程序中删除联合会话 Cookie。另外,注销请求将发送到 STS: GET https://localhost/IP1/STS?wa=wsignout1.0 如果不使用 FederatedPassiveSignInStatus 控件,则可以直接调用 WSFederationAuthenticationModule.SignOut,以触发将注销请求重定向到 STS 的操作。 单一注销意味着用户从使用联合身份标识登录的所有应用程序注销。如果 STS 支持此功能,则应保存会话期间用户登录的 RP 应用程序列表,在请求联合注销时向每个 RP 发出清除请求: GET https://localhost/ClaimsAwareWebSite?wa=wsignoutcleanup1.0 在更复杂的方案中,同样的清除请求应发送到联合会话涉及的所有其他 STS。为此,STS 必须事先知道每个 RP 和 STS 的清除 URI。要支持单一注销,RP 应能够处理这些清除请求。FAM 和 FederatedPassiveSignInStatus 控件都支持此功能。如果使用 FAM,可将清除请求发送到 RP 的任一 URI,FAM 将处理该请求,清除所有会话 Cookie。如果使用 FederatedPassiveSignInStatus 控件,则必须将清除请求发送到包含该控件的页面。 事实上,除了建议的查询字符串和通信流程,WS-Federation 规范未详细规定如何实现单一注销和清除行为。保证单一注销对所有联合合作伙伴有效,这并不容易,但如果您拥有这样的环境,并希望达到此目标,它是确实可行的。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |