次の方法で共有


ClaimsPrincipal クラス

定義

複数の要求ベース ID をサポートする IPrincipal 実装。

public ref class ClaimsPrincipal : System::Security::Principal::IPrincipal
public class ClaimsPrincipal : System.Security.Principal.IPrincipal
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class ClaimsPrincipal : System.Security.Principal.IPrincipal
type ClaimsPrincipal = class
    interface IPrincipal
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type ClaimsPrincipal = class
    interface IPrincipal
Public Class ClaimsPrincipal
Implements IPrincipal
継承
ClaimsPrincipal
派生
属性
実装

次の例では、ユーザーが HTTP 要求で提示した要求を抽出し、HTTP 応答に書き込みます。 現在のユーザーは、 から HttpContext として読み取られます ClaimsPrincipal。 その後、要求がそこから読み取られ、応答に書き込まれます。

if (HttpContext.Current.User is ClaimsPrincipal principal)
{
   foreach (Claim claim in principal.Claims)
   {
      Response.Write("CLAIM TYPE: " + claim.Type + "; CLAIM VALUE: " + claim.Value + "</br>");
   }
}

注釈

.NET Framework 4.5 以降、Windows Identity Foundation (WIF) とクレーム ベースの ID は、.NET Frameworkに完全に統合されています。 これは、.NET Frameworkのプリンシパルを表す多くのクラスが、単に インターフェイスを実装IPrincipalするのではなく、 からClaimsPrincipal派生していることを意味します。 インターフェイスの IPrincipal 実装に加えて、 ClaimsPrincipal クレームの操作に役立つプロパティとメソッドを公開します。

ClaimsPrincipal は ID のコレクションを公開します。それぞれの ID は です ClaimsIdentity。 一般的なケースでは、 プロパティを介して Identities アクセスされるこのコレクションには、1 つの要素のみが含まれます。

ほとんどのプリンシパル クラスが ClaimsPrincipal 派生するプリンシパルとして .NET 4.5 で を導入しても、ID を処理する方法で何も変更する必要はありません。 ただし、より多くの可能性を開き、より細かいアクセス制御を実行する可能性が高くなります。 次に例を示します。

  • アプリケーション コード自体は、現在のプリンシパルに含まれる要求を直接操作して、追加の認証、承認、パーソナル化のタスクを推進できます。

  • 要求処理パイプラインを使用してリソースを前面に移動できます。これにより、実行がコードに到達する前でも、認証要求と承認ポリシーを処理できます。 たとえば、 クラスから派生したクラスのインスタンスであるカスタムクレーム認証マネージャーを使用して、Web ベースのアプリケーションまたはサービスを ClaimsAuthenticationManager 構成できます。 構成されている場合、要求処理パイプラインは、要求認証マネージャーで メソッドを呼び出 Authenticate し、受信要求のコンテキストを表す を渡 ClaimsPrincipal します。 要求認証マネージャーは、受信要求の値に基づいて認証を実行できます。 また、受信要求セットに要求をフィルター処理、変換、または追加することもできます。 たとえば、ローカル ユーザー プロファイルなどのローカル データ ソースから作成された新しい要求で受信要求セットをエンリッチするために使用できます。

  • カスタム要求承認マネージャー (クラスから派生するクラスのインスタンス) を使用して Web ベースのアプリケーションを ClaimsAuthorizationManager 構成できます。 構成されている場合、要求処理パイプラインは 受信 ClaimsPrincipal を に AuthorizationContext パッケージし、要求承認マネージャーで メソッドを呼び出 CheckAccess します。 その後、要求承認マネージャーは、受信要求に基づいて承認を適用できます。

  • インライン要求ベースのコード アクセス チェックを実行するには、カスタム要求承認マネージャーを使用してアプリケーションを構成し、 クラスを ClaimsPrincipalPermission 使用して命令型アクセス チェックを実行するか、 ClaimsPrincipalPermissionAttribute を使用して宣言型アクセス チェックを実行します。 要求ベースのコード アクセス チェックは、処理パイプラインの外部でインラインで実行されるため、要求承認マネージャーが構成されている限り、すべてのアプリケーションで使用できます。

要求に ClaimsPrincipal 関連付けられているプリンシパルのインスタンス、またはスレッドが実行されているプリンシパルのインスタンスを証明書 利用者 (RP) アプリケーション で取得するには、 Thread.CurrentPrincipal プロパティを に ClaimsPrincipalキャストします。 オブジェクトに ClaimsPrincipal 関連付けられている要求は、その Claims プロパティを使用して使用できます。 プロパティは Claims 、プリンシパルに関連付けられている ID に含まれるすべての要求を返します。 に複数ClaimsIdentityのインスタンスがClaimsPrincipal含まれている一般的でない場合は、 プロパティをIdentities使用するか、 プロパティを使用してプライマリ ID にIdentityアクセスできます。 ClaimsPrincipal には、これらの要求を検索できるいくつかのメソッドが用意されており、言語統合クエリ (LINQ) が完全にサポートされています。 ID は、 メソッドまたは AddIdentity メソッドを使用してプリンシパルにAddIdentities追加できます。

注意

に ID を追加するには、 ClaimsPrincipal呼び出し元が完全な信頼を持っている必要があります。

既定では、WIF は、 プロパティを通じて返すプライマリ ID を選択するときにオブジェクトに優先順位 WindowsIdentityIdentity 付けます。 この動作を変更するには、 プロパティを通じてデリゲートを指定して PrimaryIdentitySelector 選択を実行します。 プロパティは ClaimsPrincipalSelector 、 プロパティと同様の機能を Current 提供します。

要求ベースのモデルでは、プリンシパルが指定されたロールにあるかどうかは、基になる ID によって提示される要求によって決定されます。 メソッドは IsInRole 基本的に、プリンシパルに関連付けられている各 ID を調べて、指定されたロール値を持つ要求を所有しているかどうかを判断します。 ロール チェック中に調べる必要がある要求を決定するために使用される要求の型 (プロパティで Claim.Type 表されます) は、その ClaimsIdentity.RoleClaimType プロパティを通じて ID に対して指定されます。 したがって、ロール チェック中に検査される要求は、プリンシパルに関連付けられているさまざまな ID に対して異なる種類にすることができます。

コンストラクター

ClaimsPrincipal()

ClaimsPrincipal クラスの新しいインスタンスを初期化します。

ClaimsPrincipal(BinaryReader)

BinaryReader を指定して、ClaimsPrincipal のインスタンスを初期化します。

ClaimsPrincipal(IEnumerable<ClaimsIdentity>)

指定した要求 ID を使用して、ClaimsPrincipal クラスの新しいインスタンスを初期化します。

ClaimsPrincipal(IIdentity)

指定された ID から ClaimsPrincipal クラスの新しいインスタンスを初期化します。

ClaimsPrincipal(IPrincipal)

指定されたプリンシパルから ClaimsPrincipal クラスの新しいインスタンスを初期化します。

ClaimsPrincipal(SerializationInfo, StreamingContext)
古い.

ISerializable を使用して作成されたシリアル化ストリームから、ClaimsPrincipal クラスの新しいインスタンスを初期化します。

プロパティ

Claims

この要求プリンシパルと関連付けられているすべての要求 ID のすべての要求を含むコレクションを取得します。

ClaimsPrincipalSelector

Current プロパティによって返される要求プリンシパルを選択するために使用するデリゲートを取得または設定します。

Current

現在の要求プリンシパルを取得します。

CustomSerializationData

派生型によって提供される追加データが含まれています。 通常、WriteTo(BinaryWriter, Byte[]) の呼び出し時に設定されます。

Identities

このクレーム プリンシパルと関連付けられているクレーム ID をすべて含むコレクションを取得します。

Identity

この要求プリンシパルに関連付けられたプライマリ要求 ID を取得します。

PrimaryIdentitySelector

Identity プロパティによって返されるクレーム ID を選択するために使用するデリゲートを取得または設定します。

メソッド

AddIdentities(IEnumerable<ClaimsIdentity>)

指定された要求 ID をこの要求プリンシパルに追加します。

AddIdentity(ClaimsIdentity)

指定された要求 ID をこの要求プリンシパルに追加します。

Clone()

このインスタンスの新しいコピーを作成します。

CreateClaimsIdentity(BinaryReader)

新しい要求の ID を作成します。

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
FindAll(Predicate<Claim>)

指定した述語に一致するすべてのクレームを取得します。

FindAll(String)

すべての要求、または指定された要求の種類を持つ要求を取得します。

FindFirst(Predicate<Claim>)

指定した述語に一致する最初のクレームを取得します。

FindFirst(String)

指定したクレームの種類の最初のクレームを取得します。

GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetObjectData(SerializationInfo, StreamingContext)

SerializationInfo オブジェクトに、現在の ClaimsPrincipal オブジェクトをシリアル化するために必要なデータを格納します。

GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
HasClaim(Predicate<Claim>)

この要求プリンシパルに関連付けられている要求 ID のいずれかに、指定された述語と一致する要求が含まれているかどうかを判断します。

HasClaim(String, String)

この要求プリンシパルに関連付けられているクレーム ID のいずれかに、指定された要求の種類と値を持つ要求が含まれているかどうかを判断します。

IsInRole(String)

この要求プリンシパルが表すエンティティ (ユーザー) が、指定したロールにあるかどうかを示す値を返します。

MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)
WriteTo(BinaryWriter)

BinaryWriter を使用してシリアル化します。

WriteTo(BinaryWriter, Byte[])

BinaryWriter を使用してシリアル化します。

適用対象

こちらもご覧ください