SecurityTokenService.GetOutputClaimsIdentity Metoda

Definicja

W przypadku zastąpienia w klasie pochodnej ta metoda zwraca kolekcję podmiotów wyjściowych, które mają zostać uwzględnione w wystawionym tokenie.

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

Parametry

principal
ClaimsPrincipal

Element ClaimsPrincipal reprezentujący tożsamość osoby żądającej tokenu.

request
RequestSecurityToken

Element RequestSecurityToken reprezentujący żądanie tokenu zabezpieczającego. Obejmuje to komunikat żądania, a także inne informacje związane z klientem, takie jak kontekst autoryzacji.

scope
Scope

Element Scope zawierający informacje o jednostki uzależnionej skojarzonej z żądaniem. Jest to Scope obiekt zwrócony przez metodę GetScope(ClaimsPrincipal, RequestSecurityToken) .

Zwraca

Element ClaimsIdentity zawierający kolekcję oświadczeń, które zostaną umieszczone w wystawionym tokenie zabezpieczającym.

Przykłady

Przykładowy kod używany w tym temacie jest pobierany z przykładu Custom Token . Ten przykład zawiera niestandardowe klasy, które umożliwiają przetwarzanie prostych tokenów sieci Web (SWT) i obejmują implementację pasywnej usługi STS, która może obsługiwać token SWT. Przykład implementacji aktywnej usługi STS można znaleźć w przykładzie Federation Metadata . Aby uzyskać informacje o tych przykładach i innych przykładach dostępnych dla programu WIF oraz o tym, gdzie je pobrać, zobacz Przykładowy indeks kodu programu WIF. Poniższy kod pokazuje, jak zastąpić metodę GetOutputClaimsIdentity zwracania oświadczeń dla usługi STS. W tym przykładzie komunikat Żądaj tokenu zabezpieczającego (RST) jest ignorowany i zwracana jest kolekcja oświadczeń na podstawie użytkownika uwierzytelnionego w usłudze STS.

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

Uwagi

Metoda jest wywoływana GetOutputClaimsIdentity z potoku wystawiania tokenów, który jest implementowany przez metodę Issue . Zwraca obiekt ClaimsIdentity zawierający oświadczenia do uwzględnienia w wystawionym tokenie zabezpieczającym na podstawie żądającego tokenu (parametru), przychodzącego RST ( principalrequest parametru) i jednostki uzależnionej, dla której jest przeznaczony token ( scope parametr). Logika w tej metodzie dotyczy przede wszystkim odpowiedzi na następujące pytania:

  • Które typy oświadczeń należy uwzględnić w odpowiedzi na podstawie dostawcy zasobów, dla których jest ona przeznaczona? Zazwyczaj jest to ustalane na podstawie poszczególnych żądań z list typów oświadczeń wymaganych dla każdego żądania lub na żądanie, sprawdzając Claims właściwość żądania. Jednak logika i szczegóły określania oświadczeń do uwzględnienia w odpowiedzi są całkowicie do twojej implementacji.

  • Które wartości oświadczeń powinny być przypisane do oświadczeń w odpowiedzi? W przypadku dostawcy tożsamości (IP-STS) zwykle oznacza to, że w celu uzyskania dostępu do magazynu (lub innej jednostki) do zwracania wartości wymaganych typów oświadczeń przez dostawcę ClaimsPrincipal tożsamości ( principal lub innej jednostki). W przypadku dostawcy federacyjnego (R-STS) zwykle oznacza to wykonywanie pewnego rodzaju przetwarzania na oświadczeniach przychodzących osoby żądającej w celu spełnienia żądania; być może wykonuje filtrowanie lub przekształcanie niektórych oświadczeń przedstawionych przez żądającego, przekazując inne przez niezmodyfikowane. Oczywiście, podobnie jak w przypadku podejmowania decyzji, które oświadczenia do uwzględnienia w odpowiedzi, szczegóły i logika sposobu określania wartości tych oświadczeń zależy od implementacji.

Uwagi dotyczące implementowania

Tę metodę należy zastąpić w implementacji SecurityTokenService klasy .

Dotyczy

Zobacz też