SecurityTokenService.GetOutputClaimsIdentity Metodo

Definizione

Una volta eseguito l'override in una classe derivata, questo metodo restituisce una raccolta di oggetti di output da includere nel token emesso.

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

Parametri

principal
ClaimsPrincipal

Oggetto ClaimsPrincipal che rappresenta l'identità del richiedente del token.

request
RequestSecurityToken

Oggetto RequestSecurityToken che rappresenta la richiesta del token di sicurezza. Sono inclusi il messaggio di richiesta nonché altre informazioni correlate client come il contesto di autorizzazione.

scope
Scope

Oggetto Scope che contiene informazioni sul relying party associato alla richiesta. Si tratta dell'oggetto Scope restituito dal metodo GetScope(ClaimsPrincipal, RequestSecurityToken).

Restituisce

ClaimsIdentity

ClaimsIdentity contenente la raccolta delle attestazioni che verranno inserite nel token di sicurezza emesso.

Esempio

L'esempio di codice usato in questo argomento viene tratto dall'esempio Custom Token . Questo esempio fornisce classi personalizzate che consentono l'elaborazione di token Web semplici (SWT) e include un'implementazione di un servizio stS passivo in grado di gestire un token SWT. Per un esempio di come implementare un servizio di sicurezza di sicurezza attivo, è possibile visualizzare l'esempio Federation Metadata . Per informazioni su questi esempi e altri esempi disponibili per WIF e su dove scaricarli, vedere Indice di esempio di codice WIF. Il codice seguente illustra come eseguire l'override del metodo per restituire le attestazioni per il GetOutputClaimsIdentity servizio di sicurezza. In questo esempio viene ignorato il messaggio Request Security Token (RST) e viene restituita una raccolta di attestazioni in base all'utente come autenticato nel servizio di sicurezza.

/// <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;
}

Commenti

Il GetOutputClaimsIdentity metodo viene chiamato dalla pipeline di rilascio del token, implementata dal Issue metodo . Restituisce un oggetto ClaimsIdentity che contiene le attestazioni da includere nel token di sicurezza rilasciato in base al richiedente del token (il parametro), alla RST in ingresso (requestparametro) e alla relying party per cui è previsto il token (principalil scope parametro). La logica in questo metodo riguarda principalmente la risposta alle domande seguenti:

  • Quali tipi di attestazione devono essere inclusi nella risposta in base all'RP per cui è previsto? In genere, ciò viene deciso su base per RP da elenchi di tipi di attestazione necessari per ogni RP o su base richiesta esaminando la Claims proprietà della richiesta. Tuttavia, la logica e i dettagli per determinare le attestazioni da includere nella risposta sono completamente fino all'implementazione.

  • Quali valori attestazioni devono essere assegnati alle attestazioni nella risposta? Per un provider di identità (IP-STS) questo significa in genere usare una o più attestazioni nel richiedente ClaimsPrincipal (fornito dal principal parametro) per accedere a un archivio (o un'altra entità) per restituire i valori per i tipi di attestazione richiesti. Per un provider federativo (R-STS) questo significa in genere eseguire un certo tipo di elaborazione sulle attestazioni in ingresso del richiedente per soddisfare la richiesta; forse eseguendo filtri o trasformazioni su alcune attestazioni presentate dal richiedente, passando altri tramite un oggetto non modificato. Naturalmente, come nel caso di decidere quali attestazioni includere nella risposta, i dettagli e la logica di come determinare i valori di queste attestazioni è fino all'implementazione.

Note per gli implementatori

È necessario eseguire l'override di questo metodo nell'implementazione della classe SecurityTokenService.

Si applica a

Vedi anche