构建 STS

STS 是颁发机构的组件,负责接受传入的请求、对传入的安全令牌进行验证和解密、从传入的令牌中提取声明、将声明打包到传出的安全令牌中,以及对传出的安全令牌进行加密。WIF 可通过处理这些细节操作,让您轻松地构建自己的 STS,而且还提供扩展点方便您实施安全策略。 下面是策略可回答的问题示例。

  • 我为哪些信赖方应用程序提供安全令牌?

  • 这些应用程序关注哪些声明?

  • 我应该如何对用户进行身份验证?

  • 不同的应用程序是否有不同的安全要求?

  • 我与哪些合作伙伴联合?

多数情况下,最好选择使用现有的 STS,如 Active Directory® Federation Service (AD FS) 2.0。 如果需要实施不受现有 STS 支持的安全策略,则应该使用 WIF。

有关构建 STS 的详细信息,请参阅如何构建 ASP.NET STS如何构建 WCF STS

STS 体系结构

通过从 WIF 提供的 SecurityTokenService 派生来创建自己的 STS。 必须实施此类的以下两个方法:

  1. GetScope。此方法获取调用者的 IClaimsPrincipal 和传入的 RST,并返回令牌颁发请求的配置,由 Scope 类表示。 在此方法中,可以标准化信赖方的地址并选择签署和加密密钥。 通常,对安全令牌进行加密,以便只有信赖方能够读取这些令牌。

    EncryptingCredentials 用于确定令牌是否加密。此外,TokenEncryptionRequiredSymmetricKeyEncryptionRequired 的默认值为 true,目的是防止 STS 颁发不安全的令牌。

  2. GetOutputClaimsIdentity。此方法获取调用者的 IClaimsPrincipal、传入的 RST 和从 GetScope 返回的 Scope 对象,并返回要包括在所颁发令牌中的 IClaimsIdentity。 可通过此方法决定令牌中包括哪些声明。

有关这些方法的实施示例,请参阅示例或 ASP.NET 安全令牌服务网站WCF 安全令牌服务主题。