ClaimsPrincipal クラス

定義

複数の要求ベース ID をサポートする IPrincipal 実装。An IPrincipal implementation that supports multiple claims-based identities.

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 応答に書き込みます。The following example extracts the claims presented by a user in an HTTP request and writes them to the HTTP response. 現在のユーザーは、からとして読み取られ HttpContext ClaimsPrincipal ます。The current user is read from the HttpContext as a ClaimsPrincipal. その後、クレームが読み取られ、応答に書き込まれます。The claims are then read from it and then are written to the response.

ClaimsPrincipal principal = HttpContext.Current.User as ClaimsPrincipal;  
if (null != 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 に完全に統合されています。Beginning with .NET Framework 4.5, Windows Identity Foundation (WIF) and claims-based identity have been fully integrated into the .NET Framework. これは、.NET Framework 内のプリンシパルを表す多くのクラスが、単にインターフェイスを実装するのではなく、から派生するようになったことを意味し ClaimsPrincipal IPrincipal ます。This means that many classes that represent a principal in the .NET Framework now derive from ClaimsPrincipal rather than simply implementing the IPrincipal interface. では、インターフェイスを実装するだけでなく IPrincipalClaimsPrincipal クレームを操作するのに役立つプロパティとメソッドを公開しています。In addition to implementing the IPrincipal interface, ClaimsPrincipal exposes properties and methods that are useful for working with claims.

ClaimsPrincipal id のコレクションを公開します。各 id は ClaimsIdentity です。ClaimsPrincipal exposes a collection of identities, each of which is a ClaimsIdentity. 一般的なケースでは、プロパティを介してアクセスされるこのコレクションに Identities は、要素が1つだけ含まれます。In the common case, this collection, which is accessed through the Identities property, will only have a single element.

ClaimsPrincipal.Net 4.5 では、ほとんどのプリンシパルクラスの派生元であるプリンシパルとしてが導入されているため、id を処理する方法で何も変更する必要がありません。The introduction of ClaimsPrincipal in .NET 4.5 as the principal from which most principal classes derive does not force you to change anything in the way in which you deal with identity. ただし、より多くの可能性があり、より詳細なアクセス制御を実行する可能性が高くなります。It does, however open up more possibilities and offer more chances to exercise finer access control. 次に例を示します。For example:

  • アプリケーションコード自体は、現在のプリンシパルに含まれるクレームを直接操作して、認証、承認、およびパーソナル化の追加タスクを実行できます。The application code itself can work directly with the claims contained in the current principal to drive extra authentication, authorization, and personalization tasks.

  • リソースの前に要求処理パイプラインを使用できます。これにより、実行がコードに到達する前であっても認証要求と承認ポリシーを処理できます。You can front your resources with a claims processing pipeline, which can deal with authentication requests and authorization policy even before execution reaches your code. たとえば、クラスから派生したクラスのインスタンスであるカスタムクレーム認証マネージャーを使用して、web ベースのアプリケーションまたはサービスを構成でき ClaimsAuthenticationManager ます。For example, you can configure a web-based application or service with a custom claims authentication manager, an instance of a class that derives from the ClaimsAuthenticationManager class. このように構成されている場合、要求処理パイプラインは、要求 Authenticate 認証マネージャーでメソッドを呼び出して、 ClaimsPrincipal 受信要求のコンテキストを表すを渡します。When so configured, the request processing pipeline invokes the Authenticate method on your claims authentication manager passing it a ClaimsPrincipal that represents the context of the incoming request. 要求認証マネージャーは、入力方向の要求の値に基づいて認証を実行できます。Your claims authentication manager can then perform authentication based on the values of the incoming claims. また、要求をフィルター処理、変換、または入力方向の要求セットに追加することもできます。It can also filter, transform, or add claims to the incoming claim set. たとえば、ローカルユーザープロファイルなど、ローカルデータソースから作成された新しい要求で入力方向の要求セットを強化するために使用できます。For example, it could be used to enrich the incoming claim set with new claims created from a local data source such as a local user profile

  • カスタムクレーム承認マネージャー (クラスから派生したクラスのインスタンス) を使用して、web ベースのアプリケーションを構成でき ClaimsAuthorizationManager ます。You can configure a web-based application with a custom claims authorization manager, an instance of a class that derives from the ClaimsAuthorizationManager class. このように構成されている場合、要求処理パイプラインは、受信をでパッケージ化し、要求 ClaimsPrincipal AuthorizationContext CheckAccess 承認マネージャーでメソッドを呼び出します。When so configured, the request processing pipeline packages the incoming ClaimsPrincipal in an AuthorizationContext and invokes the CheckAccess method on your claims authorization manager. 要求承認マネージャーは、入力方向の要求に基づいて承認を強制できます。Your claims authorization manager can then enforce authorization based on the incoming claims.

  • インライン要求ベースのコードアクセスチェックを実行するには、カスタムクレーム承認マネージャーを使用してアプリケーションを構成し、クラスを使用して ClaimsPrincipalPermission 命令型アクセスチェックを実行するか、またはを使用して ClaimsPrincipalPermissionAttribute 宣言アクセスチェックを実行します。Inline claims-based code access checks can be performed by configuring your application with a custom claims authorization manager and using either the ClaimsPrincipalPermission class to perform imperative access checks or the ClaimsPrincipalPermissionAttribute to perform declarative access checks. 要求ベースのコードアクセスチェックは、処理パイプラインの外部でインラインで実行されます。そのため、要求承認マネージャーが構成されていれば、すべてのアプリケーションで使用できます。Claims-based code access checks are performed inline, outside of the processing pipeline, and so are available to all applications as long as a claims authorization manager is configured.

ClaimsPrincipalRP アプリケーション (またはスレッドが実行されているプリンシパル) 内の要求に関連付けられているプリンシパルのインスタンスを取得するには、プロパティをにキャストし Thread.CurrentPrincipal ClaimsPrincipal ます。You can obtain a ClaimsPrincipal instance for the principal associated with a request in an RP application (or the principal under which a thread is executing) by casting the Thread.CurrentPrincipal property to ClaimsPrincipal. オブジェクトに関連付けられている要求 ClaimsPrincipal は、そのプロパティを通じて取得でき Claims ます。The claims associated with an ClaimsPrincipal object are available through its Claims property. プロパティは、 Claims プリンシパルに関連付けられている id に含まれるすべてのクレームを返します。The Claims property returns all of the claims contained by the identities associated with the principal. に複数のインスタンスが含まれている一般的なケースでは、プロパティを ClaimsPrincipal ClaimsIdentity 使用するか、 Identities プロパティを使用してプライマリ id にアクセスすることができます IdentityIn the uncommon case in which the ClaimsPrincipal contains multiple ClaimsIdentity instances, you can use the Identities property or you can access the primary identity by using the Identity property. ClaimsPrincipal には、これらの要求を検索して、統合言語クエリ (LINQ) を完全にサポートするための方法がいくつか用意されています。ClaimsPrincipal provides several methods through which these claims may be searched and fully supports Language Integrated Query (LINQ). Id AddIdentities は、メソッドまたはメソッドを使用してプリンシパルに追加でき AddIdentity ます。Identities can be added to the principal by using the AddIdentities or AddIdentity methods.

注意

に id を追加するには、 ClaimsPrincipal 呼び出し元に完全信頼が必要です。To add identities to the ClaimsPrincipal, a caller must have full trust.

既定では、WIF は、 WindowsIdentity プロパティを通じて返すプライマリ id を選択するときに、オブジェクトの優先順位を設定 Identity します。By default, WIF prioritizes WindowsIdentity objects when selecting the primary identity to return through the Identity property. この動作を変更するには、プロパティを通じてデリゲートを指定して PrimaryIdentitySelector 、選択を実行します。You can modify this behavior by supplying a delegate through the PrimaryIdentitySelector property to perform the selection. プロパティは、 ClaimsPrincipalSelector プロパティと同様の機能を提供し Current ます。The ClaimsPrincipalSelector property provides similar functionality for the Current property.

要求ベースのモデルでは、指定されたロールにプリンシパルがあるかどうかは、基になる id によって提示される要求によって決まります。In the claim-based model, whether a principal is in a specified role is determined by the claims presented by its underlying identities. IsInRoleこのメソッドは、基本的にプリンシパルに関連付けられている各 id を調べて、指定されたロール値を持つクレームを所有しているかどうかを判断します。The IsInRole method essentially examines each identity associated with the principal to determine whether it possesses a claim with the specified role value. Claim.Typeロールチェック中に検査する要求を決定するために使用されるクレームの種類 (プロパティによって表されます) は、そのプロパティを通じて id に対して指定され ClaimsIdentity.RoleClaimType ます。The type of the claim (represented by its Claim.Type property) used to determine which claims should be examined during role checks is specified on an identity through its ClaimsIdentity.RoleClaimType property. このため、ロールチェック中に検査される要求は、プリンシパルに関連付けられている異なる id に対して異なる種類にすることができます。Thus, the claims examined during role checks can be of a different type for different identities associated with the principal.

コンストラクター

ClaimsPrincipal()

ClaimsPrincipal クラスの新しいインスタンスを初期化します。Initializes a new instance of the ClaimsPrincipal class.

ClaimsPrincipal(BinaryReader)

BinaryReader を指定して、ClaimsPrincipal のインスタンスを初期化します。Initializes an instance of ClaimsPrincipal with the specified BinaryReader.

ClaimsPrincipal(IEnumerable<ClaimsIdentity>)

指定した要求 ID を使用して、ClaimsPrincipal クラスの新しいインスタンスを初期化します。Initializes a new instance of the ClaimsPrincipal class using the specified claims identities.

ClaimsPrincipal(IIdentity)

指定された ID から ClaimsPrincipal クラスの新しいインスタンスを初期化します。Initializes a new instance of the ClaimsPrincipal class from the specified identity.

ClaimsPrincipal(IPrincipal)

指定されたプリンシパルから ClaimsPrincipal クラスの新しいインスタンスを初期化します。Initializes a new instance of the ClaimsPrincipal class from the specified principal.

ClaimsPrincipal(SerializationInfo, StreamingContext)

ISerializable を使用して作成されたシリアル化ストリームから、ClaimsPrincipal クラスの新しいインスタンスを初期化します。Initializes a new instance of the ClaimsPrincipal class from a serialized stream created by using ISerializable.

プロパティ

Claims

この要求プリンシパルと関連付けられているすべての要求 ID のすべての要求を含むコレクションを取得します。Gets a collection that contains all of the claims from all of the claims identities associated with this claims principal.

ClaimsPrincipalSelector

Current プロパティによって返される要求プリンシパルを選択するために使用するデリゲートを取得または設定します。Gets or sets the delegate used to select the claims principal returned by the Current property.

Current

現在の要求プリンシパルを取得します。Gets the current claims principal.

CustomSerializationData

派生型によって提供される追加データが含まれています。Contains any additional data provided by a derived type. 通常、WriteTo(BinaryWriter, Byte[]) の呼び出し時に設定されます。Typically set when calling WriteTo(BinaryWriter, Byte[]).

Identities

このクレーム プリンシパルと関連付けられているクレーム ID をすべて含むコレクションを取得します。Gets a collection that contains all of the claims identities associated with this claims principal.

Identity

この要求プリンシパルに関連付けられたプライマリ要求 ID を取得します。Gets the primary claims identity associated with this claims principal.

PrimaryIdentitySelector

Identity プロパティによって返されるクレーム ID を選択するために使用するデリゲートを取得または設定します。Gets or sets the delegate used to select the claims identity returned by the Identity property.

メソッド

AddIdentities(IEnumerable<ClaimsIdentity>)

指定された要求 ID をこの要求プリンシパルに追加します。Adds the specified claims identities to this claims principal.

AddIdentity(ClaimsIdentity)

指定された要求 ID をこの要求プリンシパルに追加します。Adds the specified claims identity to this claims principal.

Clone()

このインスタンスの新しいコピーを作成します。Returns a copy of this instance.

CreateClaimsIdentity(BinaryReader)

新しい要求の ID を作成します。Creates a new claims identity.

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

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

指定した述語に一致するすべてのクレームを取得します。Retrieves all of the claims that are matched by the specified predicate.

FindAll(String)

すべての要求、または指定された要求の種類を持つ要求を取得します。Retrieves all or the claims that have the specified claim type.

FindFirst(Predicate<Claim>)

指定した述語に一致する最初のクレームを取得します。Retrieves the first claim that is matched by the specified predicate.

FindFirst(String)

指定したクレームの種類の最初のクレームを取得します。Retrieves the first claim with the specified claim type.

GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

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

SerializationInfo オブジェクトに、現在の ClaimsPrincipal オブジェクトをシリアル化するために必要なデータを格納します。Populates the SerializationInfo with data needed to serialize the current ClaimsPrincipal object.

GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

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

この要求プリンシパルに関連付けられている要求 ID のいずれかに、指定された述語と一致する要求が含まれているかどうかを判断します。Determines whether any of the claims identities associated with this claims principal contains a claim that is matched by the specified predicate.

HasClaim(String, String)

この要求プリンシパルに関連付けられているクレーム ID のいずれかに、指定された要求の種類と値を持つ要求が含まれているかどうかを判断します。Determines whether any of the claims identities associated with this claims principal contains a claim with the specified claim type and value.

IsInRole(String)

この要求プリンシパルが表すエンティティ (ユーザー) が、指定したロールにあるかどうかを示す値を返します。Returns a value that indicates whether the entity (user) represented by this claims principal is in the specified role.

MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(継承元 Object)
WriteTo(BinaryWriter)

BinaryWriter を使用してシリアル化します。Serializes using a BinaryWriter.

WriteTo(BinaryWriter, Byte[])

BinaryWriter を使用してシリアル化します。Serializes using a BinaryWriter.

適用対象

こちらもご覧ください