上次修改时间: 2010年3月18日
适用范围: SharePoint Foundation 2010
基于声明的标识模型
当您构建声明感知应用程序时,用户会以一组声明的形式向您的应用程序提供标识。其中一个声明可能是用户名,另一个可能是电子邮件地址。此处的概念是外部标识系统将配置为向您的应用程序提供它所需的有关提出每个请求的用户的信息,以及保证应用程序收到的标识数据来自可信源的加密保证。
在此模型中,单一登录更易于实现,并且您的应用程序不再负责处理以下事项:
对用户进行身份验证
存储用户帐户和密码
调用企业目录以查找用户标识详细信息
与来自其他平台或公司的标识系统集成
在此模型中,您的应用程序会根据用户提供的声明做出与标识相关的决策。这可能包括通过用户的名字进行简单的应用程序个性化,以及授权用户访问应用程序中的高价值功能和资源等诸多决策。
下面的几节和接下来的几个主题将介绍一些术语和概念,以帮助您了解基于声明的标识体系结构。
标识
标识是一组属性,用于描述系统中要确保其安全的用户或其他一些实体。
声明
可将声明视为某些标识信息(例如,姓名、电子邮件地址、年龄或在"销售"角色中的成员身份)。应用程序收到的声明越多,您对用户的了解越全面。由于发送方式不同,将这些信息称为"声明",而不是"属性","属性"通常用于描述企业目录。在此模型中,应用程序不在目录中查找用户属性,而是由用户向应用程序发送声明,然后应用程序会对这些声明进行检查。每个声明均由发布者发出,可根据对发布者的信任程度来确定对声明的信任程度。例如,与用户发布的声明相比,公司的域控制器发布的声明更加可信。
安全令牌
用户会将一组声明随请求一同发送给您的应用程序。在 Web 服务中,这些声明是在 SOAP 信封的安全标头中传送的。在基于浏览器的 Web 应用程序中,声明通过用户浏览器中的 HTTP POST 进行传送,如果需要会话,则稍后可能在 Cookie 中对其进行缓存。无论如何传送声明,都必须对其进行序列化,此时会引入安全令牌。安全令牌是由颁发机构进行数字签名的一组序列化声明。签名很重要:它向您保证用户不仅做出了声明,还会向您发送声明。在无需加密的低安全性环境中,可以使用未签名的令牌,但本主题对此不做介绍。
Windows Identity Foundation (WIF) 中的核心功能之一是创建和读取安全令牌。WIF 和 Microsoft .NET Framework 负责处理所有加密工作,并向您的应用程序提供一组它可以读取的声明。
安全令牌服务 (STS)
安全令牌服务 (STS) 是一个根据本主题"标准"一节中讨论的互操作协议来生成、签署和颁发安全令牌的服务组件。实施这些协议需要进行大量的工作,但 WIF 能为您完成所有这些工作,让那些不精通协议的人不费吹灰之力即可启动并运行 STS。
使用 WIF 可更加轻松地生成自己的 STS。由您决定如何实现强制实施 STS 的逻辑或规则(通常称为安全策略)。
颁发机构
从颁发 Kerberos 票证的域控制器到颁发 X.509 证书的证书颁发机构,颁发机构有许多不同类型。本主题讨论的特定类型的颁发机构可颁发包含声明的安全令牌。此颁发机构是负责颁发安全令牌的 Web 应用程序或 Web 服务。如果指定目标信赖方和发出请求的用户,则该颁发机构必须能够颁发正确声明,还可能要负责与用户存储进行交互,以查找声明并对用户进行身份验证。
无论您选择哪个颁发机构,它都会在您的标识解决方案中扮演重要角色。当您通过信赖声明从应用程序中分离出身份验证功能时,实际上是将责任转给该颁发机构,由它代表您对用户进行身份验证。
信赖方
构建依赖声明的应用程序时,将构建信赖方应用程序。信赖方的同义词包括"声明感知应用程序"和"基于声明的应用程序"。Web 应用程序和 Web 服务都可以成为信赖方。
信赖方应用程序使用 STS 颁发的令牌并从令牌中提取声明,以将其用于与标识相关的任务。STS 支持两种类型的信赖方应用程序:ASP.NET Web 应用程序和 Windows Communication Foundation (WCF) Web 服务。
标准
为使所有任务都具有互操作性,在前面的方案中使用了多个 WS-* 标准。可使用 WS-MetadataExchange 检索策略,并根据 WS-Policy 规范确定策略自身的结构。STS 会公开用于实现 WS-Trust 规范的端点,该规范描述如何请求和接收安全令牌。目前,大多数 STS 都会颁发用安全声明标记语言 (SAML) 设置了格式的令牌。SAML 是业内认可的 XML 词汇表,可用来以互操作方式表示声明。在多平台环境下,这使您能够在完全不同的平台上与 STS 进行通信,并能够在不考虑平台的情况下在所有应用程序中实现单一登录。
基于浏览器的应用程序
并非只有智能客户端才能使用基于声明的标识模型。基于浏览器的应用程序(也称为被动客户端)也可以使用该模型。以下情况描述了其工作原理。
首先,用户使浏览器指向声明感知 Web 应用程序(信赖方应用程序)。该 Web 应用程序将浏览器重定向到 STS,以便对用户进行身份验证。STS 托管在一个简单的 Web 应用程序中,该应用程序会读取传入请求、使用标准 HTTP 机制对用户进行身份验证,然后创建一个 SAML 令牌并用一段 ECMAScript(JavaScript、JScript) 代码作为答复,该代码将使浏览器启动一个可将 SAML 令牌发送回信赖方的 HTTP POST。此 POST 的正文包含信赖方请求的声明。此时,信赖方通常会将声明打包到 Cookie 中,因此不必为每个请求重定向用户。