SecurityTokenService.GetOutputClaimsIdentity Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Quando sobreposto numa classe derivada, este método devolve uma coleção de sujeitos de saída para serem incluídos no token emitido.
protected:
abstract System::Security::Claims::ClaimsIdentity ^ GetOutputClaimsIdentity(System::Security::Claims::ClaimsPrincipal ^ principal, System::IdentityModel::Protocols::WSTrust::RequestSecurityToken ^ request, System::IdentityModel::Scope ^ scope);
protected abstract System.Security.Claims.ClaimsIdentity GetOutputClaimsIdentity(System.Security.Claims.ClaimsPrincipal principal, System.IdentityModel.Protocols.WSTrust.RequestSecurityToken request, System.IdentityModel.Scope scope);
abstract member GetOutputClaimsIdentity : System.Security.Claims.ClaimsPrincipal * System.IdentityModel.Protocols.WSTrust.RequestSecurityToken * System.IdentityModel.Scope -> System.Security.Claims.ClaimsIdentity
Protected MustOverride Function GetOutputClaimsIdentity (principal As ClaimsPrincipal, request As RequestSecurityToken, scope As Scope) As ClaimsIdentity
Parâmetros
- principal
- ClaimsPrincipal
A ClaimsPrincipal que representa a identidade do requerente do token.
- request
- RequestSecurityToken
A que representa o pedido de RequestSecurityToken token de segurança. Isto inclui a mensagem de pedido, bem como outras informações relacionadas com o cliente, como o contexto de autorização.
- scope
- Scope
O Scope que contém informações sobre a parte de confiança associada ao pedido. Este é o Scope objeto que foi devolvido pelo GetScope(ClaimsPrincipal, RequestSecurityToken) método.
Devoluções
A ClaimsIdentity que contém a coleção de reivindicações que serão colocadas no token de segurança emitido.
Exemplos
O exemplo de código utilizado neste tópico é retirado da Custom Token amostra. Este exemplo fornece classes personalizadas que permitem o processamento de Simples Web Tokens (SWT) e inclui uma implementação de um STS passivo capaz de servir um token SWT. Para um exemplo de como implementar um STS ativo, pode ver a Federation Metadata amostra. Para informações sobre estes exemplos e outros disponíveis para WIF e sobre onde os descarregar, consulte o Índice de Exemplos de Código WIF. O código seguinte mostra como anular o GetOutputClaimsIdentity método para devolver os sinistros do seu STS. Neste exemplo, a mensagem Request Security Token (RST) é ignorada e uma coleção de reivindicações baseadas no utilizador autenticado no STS é devolvida.
/// <summary>
/// This method returns the content of the issued token. The content is represented as a set of
/// IClaimIdentity intances, each instance corresponds to a single issued token. Currently, the Windows Identity Foundation only
/// supports a single token issuance, so the returned collection must always contain only a single instance.
/// </summary>
/// <param name="scope">The scope that was previously returned by GetScope method</param>
/// <param name="principal">The caller's principal</param>
/// <param name="request">The incoming RST, we don't use this in our implementation</param>
/// <returns></returns>
protected override ClaimsIdentity GetOutputClaimsIdentity( ClaimsPrincipal principal, RequestSecurityToken request, Scope scope )
{
//
// Return a default claim set which contains a custom decision claim
// Here you can actually examine the user by looking at the IClaimsPrincipal and
// return the right decision based on that.
//
ClaimsIdentity outgoingIdentity = new ClaimsIdentity();
outgoingIdentity.AddClaims(principal.Claims);
return outgoingIdentity;
}
Observações
O GetOutputClaimsIdentity método é chamado do pipeline de emissão de tokens, que é implementado pelo Issue método. Devolve um ClaimsIdentity que contém as reivindicações a incluir no token de segurança emitido com base no solicitante do token (o principal parâmetro), na RST recebida (o request parâmetro) e na parte confiável para quem o token se destina (o scope parâmetro). A lógica neste método preocupa-se principalmente em responder às seguintes questões:
Que tipos de reivindicações devem ser incluídos na resposta com base no RP para o qual se destina? Normalmente, isto é decidido por RP a partir das listas de tipos de pedidos necessários para cada RP ou por pedido, examinando a Claims propriedade do pedido. No entanto, a lógica e os detalhes para determinar as reivindicações a incluir na resposta dependem totalmente da sua implementação.
Quais os valores das reivindicações devem ser atribuídos às reivindicações na resposta? Para um Fornecedor de Identidade (IP-STS), isto normalmente significa usar uma ou mais reivindicações no requerente ClaimsPrincipal (fornecidas pelo
principalparâmetro) para aceder a uma loja (ou outra entidade) e devolver valores para os tipos de reclamações necessários. Para um Prestador da Federação (R-STS), isto normalmente significa realizar algum tipo de processamento nas reclamações recebidas do requerente para satisfazer o pedido; Talvez realizando filtragem ou transformação em algumas reivindicações apresentadas pelo requerente, enquanto outras passam sem modificações. Claro que, tal como no caso de decidir quais reivindicações incluir na resposta, os detalhes e a lógica de como determinar os valores dessas afirmações dependem da sua implementação.
Notas para Implementadores
Tens de sobrescrever este método na tua implementação da SecurityTokenService classe.