快速业务通道

联合身份标识:使用WIF实现ASP.NET被动身份验证

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
演示配置此简单方案的步骤,然后讨论此方案和其他方案在实践中应注意的事项。

支持被动联合的 WIF 功能

在讨论实现之前,我们回顾一下 WIF 专用于在 ASP.NET 应用程序中支持联合身份验证的功能。首先,WIF 提供以下有用的 HTTP 模块:

WSFederationAuthenticationModule (FAM):支持基于浏览器的联合,重定向到适当的 STS 以进行身份验证和令牌颁发,处理生成的登录响应,将已颁发安全令牌创建为 ClaimsPrincipal 以进行授权。此模块还处理其他重要的联合消息,如注销请求。

SessionAuthenticationModule (SAM):通过生成包含 ClaimsPrincipal 的会话安全令牌,管理经过身份验证的会话,将会话安全令牌写入 Cookie,管理会话 Cookie 的生存期,如果 Cookie 已存在,则根据 Cookie 重建 ClaimsPrincipal。此模块还包含一个本地会话令牌缓存。

ClaimsAuthorizatonModule:提供一个可扩展点,以便安装自定义 ClaimsAuthorizationManager,后者对于集中访问检查非常有用。

ClaimsPrincipalHttpModule:根据附加到请求线程的当前用户身份创建 ClaimsPrincipal。另外,该模块还提供一个可扩展点来安装自定义 ClaimsAuthenticationManager,后者用于自定义将附加到请求线程的 ClaimsPrincipal。

ClaimsPrincipalHttpModule 最适合不使用被动联合的应用程序。您可将该模块看作一个有用的工具,在 ASP.NET 应用程序迁移到被动联合之前,它可用来在应用程序内实现基于声明的安全模型。我在以前的文章中讨论过这一 WCF 方法。

其他三种模块通常一起用于被动联合 — 不过 ClaimsAuthorizationModule 是可选的。图 2 演示这些核心模块如何构成请求管道,以及这些模块在典型的联合身份验证请求中的功能。

图 2 被动联合采用的 WIF 组件和 HTTP 模块

请注意图 1 中的被动联合流程,当用户首先浏览至 RP 中的受保护页面时 (1),对应用程序的访问将被拒绝。FAM 处理还未授权的请求,生成登录消息,然后将用户重定向到 IP-STS (2)。IP-STS 验证用户身份 (3),生成登录响应(包含颁发的安全令牌),然后重定向回 RP 应用程序 (4)。

FAM 处理登录响应(确保响应包含经过身份验证的用户的有效安全令牌),根据登录响应创建 ClaimsPrincipal (5)。这将为请求线程和 HttpContext 设置安全主体。然后,FAM 使用 SAM 将 ClaimsPrincipal 序列化为 HTTP Cookie (6),在浏览器会话期间用于后续请求。如果安装了 ClaimsAuthorizationModule,该模块将调用经过配置的 ClaimsAuthorizationManager,以便在访问请求的资源之前针对 ClaimsPrincipal 执行全局访问检查 (7)。

只要请求的资源存在,就可以实现访问控制,这一过程需要使用传统的 ASP.NET 登录控件、IsInRole 检查和其他查询用户声明的自定义代码 (8)。

进行后续请求时,将使用该会话令牌和 SAM 之前写入的 Cookie (9)。这时,SAM 会验证会话令牌,根据令牌重新创建 ClaimsPrincipal (10)。仅当请求是登录响应、注销请求,或者请求被拒绝时(未提供会话令牌或者会话令牌已失效时,可能发生),FAM 才进行验证。

除上述模块之外,被动联合中还有两个很有用的 ASP.NET 控件:

FederatedPassiveSignIn 控件:在以下情况下可替代 FAM:如果应用程序将所有未经授权的调用重定向到登录页面,而登录页面只在需要身份验证时才承载此控件。这里假定用户将与登录过程进行交互,该过程在逐级身份验证方案中很有用,在这类方案中,将提示用户提供凭据(可能是除了原始登录凭据之外,应用程序要求的其他凭据)。该控件处理到 STS 的重定向,处理登录响应,根据响应初始化 ClaimsPrincipal,并利用 FAM 和 SAM 公开的功能建立安全会话。

FederatedPassiveSignInStatus 控件:此控件提供交互方式,供用户登录

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号