Share via


SecurityTokenService.Issue(ClaimsPrincipal, RequestSecurityToken) 方法

定义

发出安全令牌。

public:
 virtual System::IdentityModel::Protocols::WSTrust::RequestSecurityTokenResponse ^ Issue(System::Security::Claims::ClaimsPrincipal ^ principal, System::IdentityModel::Protocols::WSTrust::RequestSecurityToken ^ request);
public virtual System.IdentityModel.Protocols.WSTrust.RequestSecurityTokenResponse Issue (System.Security.Claims.ClaimsPrincipal principal, System.IdentityModel.Protocols.WSTrust.RequestSecurityToken request);
abstract member Issue : System.Security.Claims.ClaimsPrincipal * System.IdentityModel.Protocols.WSTrust.RequestSecurityToken -> System.IdentityModel.Protocols.WSTrust.RequestSecurityTokenResponse
override this.Issue : System.Security.Claims.ClaimsPrincipal * System.IdentityModel.Protocols.WSTrust.RequestSecurityToken -> System.IdentityModel.Protocols.WSTrust.RequestSecurityTokenResponse
Public Overridable Function Issue (principal As ClaimsPrincipal, request As RequestSecurityToken) As RequestSecurityTokenResponse

参数

principal
ClaimsPrincipal

一个 ClaimsPrincipal,表示令牌请求者的标识。

request
RequestSecurityToken

一个 RequestSecurityToken,表示安全令牌请求。 这包括请求消息和其他客户端相关信息,如授权上下文。

返回

包含发布的安全标识的 RequestSecurityTokenResponse

注解

此方法实现在 WS-Trust 规范中定义的 Issue 绑定。 方法的默认实现 Issue 通过令牌颁发 (声明颁发) 管道处理传入请求 (RST) ,并返回响应 (RSTR) ,其中包含具有相应声明的安全令牌,以便通过 RP 或适当的异常对请求者进行身份验证。 默认实现中的令牌颁发管道包括对类) (以下方法的 SecurityTokenService 调用。

  1. 用于 ValidateRequest (RST) 验证请求的方法。

  2. 用于 GetScope 获取 Scope 对象的方法,该对象包含与请求关联的信赖方 (RP) 的相关信息。 必须重写此方法。 如果 GetScope 返回 nullInvalidOperationException 则引发 。

  3. 基于 CreateSecurityTokenDescriptor RST 和 Scope 上一步返回的 对象返回安全令牌描述符的方法。 安全令牌描述符 (SecurityTokenDescriptor) 包含令牌处理程序可以使用的形式中有关请求的信息。 属性 SecurityTokenService.SecurityTokenDescriptor 设置为调用返回的描述符。 如果 null 返回 ,或者 SigningCredentials 如果描述符的 属性为 nullInvalidOperationException 则会引发 。 如果 属性为 trueScope.TokenEncryptionRequiredEncryptingCredentials返回的描述符上的 属性为 null,则也会引发异常。

  4. 方法 GetSecurityTokenHandler ,用于根据请求的令牌类型获取适当的令牌处理程序。 如果 null 返回 , NotImplementedException 则引发 。

  5. 用于 GetIssuerName 获取令牌的颁发者名称的方法。 InvalidOperationException如果名称为 null 或为空,则引发 ;否则在描述符上设置 TokenIssuerName 属性。

  6. 方法 GetTokenLifetime ,用于获取令牌的生存期并在描述符上设置 Lifetime 属性。

  7. 获取 GetProofToken 要包含在已颁发令牌中的证明令牌的方法,并在描述符上设置 Proof 属性。

  8. 用于 GetOutputClaimsIdentity 获取要包含在颁发令牌中的声明并在描述符上设置 Subject 属性的方法。 必须重写此方法。

  9. 用于 GetResponse (包含已颁发令牌的 RSTR) 创建响应的方法。

可以重写 Issue 方法来实现自定义令牌颁发管道;但是,在大多数类的自定义实现 SecurityTokenService 都适用于的开发和测试环境中,通常不需要这样做。 在许多情况下, GetOutputClaimsIdentity 会替代 和 GetScope 方法,并选择性地重写 ValidateRequest 方法,以便为环境提供可维护的 STS。 如果需要进一步自定义,通常可以通过替代实现上面列出的默认令牌颁发管道的每个阶段的方法来提供它。

适用于