Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选

首页 / 网页编程 / ASP.NET / 联合身份标识:使用WIF实现ASP.NET被动身份验证

联合身份标识:使用WIF实现ASP.NET被动身份验证2012-02-24 MSDN Michele Leroux Bustamante联合安全的目标是提供在域间建立信任关系的机制,这样,用户通过自己所属域的身份验证后,就获得了授权可以访问其他域的应用程序和服务。这使单一登录这样的身份验证方法成为可能,采用这种方法,无需针对多个应用程序和域为用户配置和管理重复帐户,从而显著降低将应用程序扩展到受信任方的成本。

在联合安全模型中,身份标识提供程序 (IdP) 执行身份验证,并通过安全令牌服务 (STS) 颁发安全令牌。这些令牌断言有关经过身份验证的用户的信息:用户身份标识和其他可能的信息(包括角色和更细粒度的访问权限)。在联合技术领域,这些信息称为声明,基于声明的访问控制是联合安全模型的核心。在这一模型中,应用程序和服务根据来自受信任颁发机构 (STS) 的声明,对特性和功能的访问进行授权。

Windows Identity Foundation (WIF) 等平台工具大大降低了支持这种联合身份验证的难度。WIF 是一个身份标识模型框架,用于构建基于声明的应用程序和服务,支持基于 SOAP(主动)和基于浏览器(被动)的联合方案。在 MSDN 杂志 2009 年 11 月刊中的文章“通过 WIF 实现基于声明的授权”中,我重点介绍了如何在 Windows Communication Foundation (WCF) 中使用 WIF。在这篇文章中,我介绍了如何为 WCF 服务实现基于声明的安全模型,以及如何迁移到联合身份验证。

在本后续文章中,我将重点介绍被动联合。我将说明被动联合的通信流程,介绍几种在 ASP.NET 应用程序中支持联合的方法,讨论基于声明的 ASP.NET 授权方法,然后介绍单一登录和单一注销方案。同时,我将介绍支持被动联合方案的基础 WIF 功能和组件。

被动联合基础

被动联合方案基于 WS-Federation 规范。该规范规定了如何请求安全令牌,如何发布和获取联合元数据文档,从而简化建立信任关系的过程。WS-Federation 还规定了单一登录和注销过程,以及其他联合实现概念。

WS-Federation 讨论了有关联合的诸多细节,其中有一部分专门介绍基于浏览器的联合,这种联合依靠 HTTP GET 和 POST、浏览器重定向以及 Cookie 实现目标。

被动联合消息传递的某些方面主要基于 WS-Trust 规范。例如,在请求 STS 的安全令牌时,被动联合采用与浏览器兼容的“请求安全令牌”(RST) 和“RST 响应”(RSTR) 形式。在被动联合方案中,我将 RST 称为登录请求消息,将 RSTR 称为登录响应消息。WS-Trust 规范侧重于基于 SOAP(主动)的联合,如 Windows 客户端与 WCF 服务的联合。

图 1 是一个简单的被动联合方案。

图 1 简单被动联合方案