AuthorizationContext クラス

定義

承認イベントのコンテキスト情報を提供します。 これには、呼び出し元を表すプリンシパル、要求されているリソース、および実行されている操作が含まれます。

public ref class AuthorizationContext
public class AuthorizationContext
type AuthorizationContext = class
Public Class AuthorizationContext
継承
AuthorizationContext

このトピックで AuthorizationContext 使用されるコード例は、サンプルから取得します Claims Based Authorization 。 このサンプルでは、構成で指定されたポリシーに基づいてサブジェクトを承認できるカスタムクレーム承認マネージャーを提供します。 このカスタム マネージャーは、マネージャーを実装する から ClaimsAuthorizationManager 派生したクラス、リソースとアクションをペアにするクラス、 ResourceAction および構成ファイルで指定されたポリシーを読み取ってコンパイルするポリシー リーダーの 3 つの基本的なコンポーネントで構成されます。 このコンパイル済みポリシーは、要求承認マネージャーがリソースへのアクセスを承認するためにプリンシパルを評価するために使用できます。 簡潔にするために、すべての要素が表示されるわけではありません。 WIF で使用できるこのサンプルとその他のサンプルの詳細と、それらをダウンロードする場所については、「 WIF コード サンプル インデックス」を参照してください。

次のコードは、 CheckAccess カスタム要求承認マネージャーの メソッドを示しています。 で AuthorizationContext 指定されたリソースとアクションに基づいてプリンシパルを評価する関数が呼び出されます。 この関数は、 または falsetrue返します。この関数は、プリンシパルへのアクセスを許可または拒否します。

static Dictionary<ResourceAction, Func<ClaimsPrincipal, bool>> _policies = new Dictionary<ResourceAction, Func<ClaimsPrincipal, bool>>();
PolicyReader _policyReader = new PolicyReader();
    /// <summary>
    /// Checks if the principal specified in the authorization context is authorized to perform action specified in the authorization context 
    /// on the specified resoure
    /// </summary>
    /// <param name="pec">Authorization context</param>
    /// <returns>true if authorized, false otherwise</returns>
    public override bool CheckAccess(AuthorizationContext pec)
    {
        //
        // Evaluate the policy against the claims of the 
        // principal to determine access
        //
        bool access = false;
        try
        {
            ResourceAction ra = new ResourceAction(pec.Resource.First<Claim>().Value, pec.Action.First<Claim>().Value);

            access = _policies[ra](pec.Principal);
        }
        catch (Exception)
        {
            access = false;
        }

        return access;
    }
}

次の XML は、構成で指定された承認ポリシーの例を示しています。 最初のポリシーでは、指定したリソースに対して指定したアクションを実行するには、プリンシパルが指定した要求のいずれかを所有している必要があります。 2 番目のポリシーでは、指定したリソースに対して指定したアクションを実行できるようにするには、プリンシパルが両方の要求を持っている必要があります。 それ以外の場合、プリンシパルには、所有している要求に関係なく、自動的にアクセス権が付与されます。

<system.identityModel>
  <identityConfiguration>
    <claimsAuthorizationManager type="ClaimsAuthorizationLibrary.MyClaimsAuthorizationManager, ClaimsAuthorizationLibrary">
      <policy resource="http://localhost:28491/Developers.aspx" action="GET">
        <or>
          <claim claimType="http://schemas.microsoft.com/ws/2008/06/identity/claims/role" claimValue="developer" />
          <claim claimType="http://schemas.xmlsoap.org/claims/Group" claimValue="Administrator" />
        </or>
      </policy>
      <policy resource="http://localhost:28491/Administrators.aspx" action="GET">
        <and>
          <claim claimType="http://schemas.xmlsoap.org/claims/Group" claimValue="Administrator" />
          <claim claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/country" claimValue="USA" />
        </and>
      </policy>
      <policy resource="http://localhost:28491/Default.aspx" action="GET">
      </policy>
      <policy resource="http://localhost:28491/" action="GET">
      </policy>
      <policy resource="http://localhost:28491/Claims.aspx" action="GET">
      </policy>
    </claimsAuthorizationManager>

    ...

  </identityConfiguration>
</system.identityModel>

注釈

クラスは AuthorizationContext 、特定のリソースに対して指定されたアクションを実行するプリンシパル (サブジェクト) を承認する必要があるかどうかを判断するために、要求承認マネージャー (クラスの ClaimsAuthorizationManager 実装) によって使用されるコンテキストを表します。 要求承認マネージャーは、 メソッドの承認コンテキストを CheckAccess 評価し、プリンシパルによって提示された要求に基づいてアクセスを拒否または許可します。

プロパティには Principal 、承認が要求されているプリンシパルが含まれます。プロパティには、 Resource プリンシパルが承認されているリソースが含まれています。プロパティには、 Action プリンシパルがリソースに対して実行するアクションが含まれています。 リソースとアクションの両方がクレームのコレクションとして表されます。ただし、ほとんどの場合、各コレクションには 1 つの要求が含まれます。

コンストラクター

AuthorizationContext(ClaimsPrincipal, Collection<Claim>, Collection<Claim>)

指定したプリンシパル、リソース クレーム、およびアクション クレームを使用して、AuthorizationContext クラスの新しいインスタンスを初期化します。

AuthorizationContext(ClaimsPrincipal, String, String)

指定したプリンシパル、リソース名、およびアクション名を使用して、AuthorizationContext クラスの新しいインスタンスを初期化します。

プロパティ

Action

プリンシパルが承認される操作を取得します。

Principal

承認の要求対象となるプリンシパル (サブジェクト) を取得します。

Resource

プリンシパルを承認する対象のリソースを取得します。

メソッド

Equals(Object)

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

(継承元 Object)
GetHashCode()

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

(継承元 Object)
GetType()

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

(継承元 Object)
MemberwiseClone()

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

(継承元 Object)
ToString()

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

(継承元 Object)

適用対象