次の方法で共有


SecurityTokenService.GetOutputClaimsIdentity メソッド

定義

この派生クラスでオーバーライドされると、このメソッドは、発行済みトークンに含まれる出力サブジェクトのコレクションを返します。

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

パラメーター

principal
ClaimsPrincipal

トークン要求元の ID を表す ClaimsPrincipal

request
RequestSecurityToken

生成されたセキュリティ トークン要求を表す RequestSecurityToken。 これには、要求メッセージと、承認コンテキストなどの他のクライアント関連情報が含まれています。

scope
Scope

リクエストと関連付けられている証明書利用者に関する情報を含む Scope オブジェクト。 これは、Scope メソッドが返した GetScope(ClaimsPrincipal, RequestSecurityToken) オブジェクトです。

戻り値

発行されたセキュリティ トークンに配置されるクレームのコレクションを含む ClaimsIdentity

このトピックで使用するコード例は、サンプルから取得したものです Custom Token 。 このサンプルでは、Simple Web Tokens (SWT) の処理を可能にするカスタム クラスを提供し、SWT トークンを提供できるパッシブ STS の実装が含まれています。 アクティブな STS を実装する方法の例については、サンプルを Federation Metadata 参照してください。 WIF で使用できるこれらのサンプルとその他のサンプルの詳細と、それらをダウンロードする場所については、「 WIF コード サンプル インデックス」を参照してください。 次のコードは、 メソッドをオーバーライドして STS の GetOutputClaimsIdentity 要求を返す方法を示しています。 この例では、セキュリティ トークン要求 (RST) メッセージは無視され、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;
}

注釈

メソッドは GetOutputClaimsIdentity 、 メソッドによって Issue 実装されるトークン発行パイプラインから呼び出されます。 トークンのClaimsIdentityリクエスター (パラメーター)、受信 RST request (パラメーター)、およびトークンが意図scopeされている証明書利用者 (principalパラメーター) に基づいて、発行されたセキュリティ トークンに含める要求を含む を返します。 このメソッドのロジックは、主に次の質問への回答に関係します。

  • 意図されている RP に基づいて、どの要求の種類を応答に含める必要がありますか? 通常、これは RP ごとに、各 RP に必要な要求の種類の一覧から、または要求のプロパティを Claims 調べることによって要求ごとに決定されます。 ただし、応答に含める要求を決定するためのロジックと詳細は、実装に完全に依存します。

  • 応答で要求に割り当てる必要がある要求値はどれですか? ID プロバイダー (IP-STS) の場合、これは通常、要求者の (パラメーターによってprincipal提供される) 1 つ以上の要求を使用してストア (またはその他のClaimsPrincipalエンティティ) にアクセスし、必要な要求の種類の値を返します。 フェデレーション プロバイダー (R-STS) の場合、これは通常、要求を満たすために要求者の受信要求に対して何らかの処理を実行することを意味します。要求者によって提示された一部の要求に対してフィルター処理または変換を実行し、他の要求を変更されていない状態で渡す場合があります。 もちろん、どのクレームを応答に含めるかを決定する場合と同様に、これらの要求の値を決定する方法の詳細とロジックは実装次第です。

注意 (実装者)

このメソッドは、SecurityTokenService クラスの実装でオーバーライドする必要があります。

適用対象

こちらもご覧ください