Share via


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 contenente la raccolta delle attestazioni che verranno inserite nel token di sicurezza emesso.

Esempio

L'esempio di codice usato in questo argomento è 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 token di sicurezza passivo in grado di gestire un token SWT. Per un esempio di come implementare un servizio token 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 GetOutputClaimsIdentity metodo per restituire attestazioni per il servizio token di sicurezza. In questo esempio, il messaggio Request Security Token (RST) viene ignorato e viene restituita una raccolta di attestazioni in base all'utente come autenticato nel servizio token 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 dei Issue token, implementata dal metodo . Restituisce un ClaimsIdentity oggetto che contiene le attestazioni da includere nel token di sicurezza rilasciato in base al richiedente del token (il principal parametro ), all'RST in ingresso ( request parametro) e alla relying party per cui il token è destinato (il 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 al punto di ripristino per cui è previsto? In genere, questa impostazione viene definita in base alle singole richieste dagli elenchi di tipi di attestazione necessari per ogni rpo o per 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 di attestazione 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; ad esempio eseguendo filtri o trasformazioni su alcune attestazioni presentate dal richiedente, passando altre tramite un'operazione non modificata. Naturalmente, come nel caso di decidere quali attestazioni includere nella risposta, i dettagli e la logica di come determinare i valori di queste attestazioni spetta all'implementazione.

Note per gli implementatori

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

Si applica a

Vedi anche