Compartilhar via


SecurityTokenService.Issue(ClaimsPrincipal, RequestSecurityToken) Método

Definição

Emite um token de segurança.

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

Parâmetros

principal
ClaimsPrincipal

Um ClaimsPrincipal que representa a identidade do solicitante do token.

request
RequestSecurityToken

Um RequestSecurityToken que representa a solicitação do token de segurança. Isso inclui a mensagem de solicitação, bem como outras informações relacionadas ao cliente, como o contexto de autorização.

Retornos

Um RequestSecurityTokenResponse que contém o token de segurança emitido.

Comentários

Esse método implementa a associação Issue definida na especificação WS-Trust. A implementação padrão do Issue método processa a RST (solicitação de entrada) por meio de um pipeline de emissão de token (emissão de declarações) e retorna uma resposta (RSTR) que contém um token de segurança com as declarações apropriadas para autenticar o solicitante com o RP ou uma exceção apropriada. O pipeline de emissão de token na implementação padrão consiste em chamadas para os métodos a seguir (da SecurityTokenService classe ).

  1. O ValidateRequest método para validar a solicitação (RST).

  2. O GetScope método para obter um Scope objeto que contém informações sobre a RP (terceira parte confiável) associada à solicitação. Você deve substituir esse método. Se GetScope retornar null, um InvalidOperationException será gerado.

  3. O CreateSecurityTokenDescriptor método para retornar um descritor de token de segurança com base no RST e no Scope objeto retornado na etapa anterior. O descritor de token de segurança (SecurityTokenDescriptor) contém informações sobre a solicitação em um formulário que pode ser usado por um manipulador de token. A SecurityTokenService.SecurityTokenDescriptor propriedade é definida como o descritor retornado pela chamada. Se null for retornado ou se a SigningCredentials propriedade do descritor for null, um InvalidOperationException será gerado. A exceção também será gerada se a Scope.TokenEncryptionRequired propriedade for true , mas a EncryptingCredentials propriedade no descritor retornado for null.

  4. O GetSecurityTokenHandler método para obter o manipulador de token apropriado com base no tipo de token solicitado. Se null for retornado, um NotImplementedException será gerado.

  5. O GetIssuerName método para obter o nome do emissor para o token. Gerará um InvalidOperationException se o nome estiver null ou estiver vazio; caso contrário, definirá a TokenIssuerName propriedade no descritor.

  6. O GetTokenLifetime método para obter o tempo de vida do token e define a Lifetime propriedade no descritor.

  7. O GetProofToken método para obter o token de prova a ser incluído no token emitido e define a Proof propriedade no descritor.

  8. O GetOutputClaimsIdentity método para obter as declarações a serem incluídas no token emitido e define a Subject propriedade no descritor. Você deve substituir esse método.

  9. O GetResponse método para criar uma resposta (RSTR) que contém o token emitido.

Você pode substituir o Issue método para implementar um pipeline de emissão de token personalizado; no entanto, isso normalmente não é necessário nos ambientes de desenvolvimento e teste para os quais a maioria das implementações personalizadas da SecurityTokenService classe são destinadas. Em muitos desses casos, você substitui os GetOutputClaimsIdentity métodos e GetScope e, opcionalmente, substitui o ValidateRequest método para fornecer um STS a serviço para seu ambiente. Se for necessária uma personalização adicional, geralmente você poderá fornecê-la substituindo os métodos que implementam cada estágio do pipeline de emissão de token padrão listado acima.

Aplica-se a