ServiceAuthorizationManager クラス

定義

サービス操作の承認アクセス チェックを行います。

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

MyServiceAuthorizationManager から継承され、ServiceAuthorizationManager メソッドをオーバーライドする、CheckAccessCore という名前のクラスのコード例を次に示します。

public class MyServiceAuthorizationManager : ServiceAuthorizationManager
{
  protected override bool CheckAccessCore(OperationContext operationContext)
  {
    // Extract the action URI from the OperationContext. Match this against the claims
    // in the AuthorizationContext.
    string action = operationContext.RequestContext.RequestMessage.Headers.Action;
  
    // Iterate through the various claim sets in the AuthorizationContext.
    foreach(ClaimSet cs in operationContext.ServiceSecurityContext.AuthorizationContext.ClaimSets)
    {
      // Examine only those claim sets issued by System.
      if (cs.Issuer == ClaimSet.System)
      {
        // Iterate through claims of type "http://www.contoso.com/claims/allowedoperation".
          foreach (Claim c in cs.FindClaims("http://www.contoso.com/claims/allowedoperation", Rights.PossessProperty))
        {
          // If the Claim resource matches the action URI then return true to allow access.
          if (action == c.Resource.ToString())
            return true;
        }
      }
    }
  
    // If this point is reached, return false to deny access.
    return false;
  }
}

Public Class MyServiceAuthorizationManager
    Inherits ServiceAuthorizationManager
    
    Protected Overrides Function CheckAccessCore(ByVal operationContext As OperationContext) As Boolean 
        ' Extract the action URI from the OperationContext. Match this against the claims.
        ' in the AuthorizationContext.
        Dim action As String = operationContext.RequestContext.RequestMessage.Headers.Action
        
        ' Iterate through the various claimsets in the AuthorizationContext.
        Dim cs As ClaimSet
        For Each cs In  operationContext.ServiceSecurityContext.AuthorizationContext.ClaimSets
            ' Examine only those claim sets issued by System.
            If cs.Issuer Is ClaimSet.System Then
                ' Iterate through claims of type "http://www.contoso.com/claims/allowedoperation".
                Dim c As Claim
                For Each c In  cs.FindClaims("http://www.contoso.com/claims/allowedoperation", _
                     Rights.PossessProperty)
                    ' If the Claim resource matches the action URI then return true to allow access.
                    If action = c.Resource.ToString() Then
                        Return True
                    End If
                Next c
            End If
        Next cs 
        ' If this point is reached, return false to deny access.
        Return False
    
    End Function 
End Class

注釈

このクラスは、すべてのポリシー (ユーザーが実行を許可されていることを定義するルール) を評価し、それらのポリシーをクライアントによるクレームと比較し、その結果である AuthorizationContextServiceSecurityContext に設定し、呼び出し元による特定の操作へのアクセスを許可するか、拒否するかを決定する承認を行います。

メソッドは CheckAccessCore 、リソースへのアクセスが試行されるたびに、Windows Communication Foundation (WCF) インフラストラクチャによって呼び出されます。 このメソッドは、アクセスの許可または拒否を表す true または false を返します。

ServiceAuthorizationManagerは、WCFID モデル インフラストラクチャの一部です。 この ID モデルでは、カスタム承認ポリシーとカスタム承認スキームを作成できます。 ID モデルのしくみの詳細については、「ID モデル を使用した要求と承認の管理」を参照してください。

カスタム承認

このクラスは、一切の承認は行わず、ユーザーがすべてのサービス操作にアクセスすることを許可します。 限定的な承認を行うには、カスタム ポリシーをチェックするカスタム承認マネージャーを作成する必要があります。 これを行うには、このクラスから継承して CheckAccessCore メソッドをオーバーライドします。 派生クラスのインスタンスは、ServiceAuthorizationManager プロパティを介して指定します。

CheckAccessCore でアプリケーションは、OperationContext オブジェクトを使用して呼び出し元の ID (ServiceSecurityContext) にアクセスできます。

IncomingMessageHeaders オブジェクトを返す MessageHeaders プロパティを取得することで、アプリケーションはサービス (To) および操作 (Action) にアクセスします。

RequestContext オブジェクトを返す RequestContext プロパティを取得することで、アプリケーションは要求メッセージ全体 (RequestMessage) にアクセスし、それに応じて承認決定を実行できます。

例については、「方法: サービスのカスタム承認マネージャーを作成する」を参照してください。

カスタム承認ポリシーを作成するには、IAuthorizationPolicy クラスを実装します。 例については、「 方法: カスタム承認ポリシーを作成する」を参照してください。

カスタム クレームを作成するには、Claim クラスを使用します。 例については、「 方法: カスタム要求を作成する」を参照してください。 カスタム要求を比較するには、「方法: 要求を比較する」に示すように、 要求を比較する必要があります。

詳細については、「 カスタム承認」を参照してください。

カスタム承認マネージャーの種類は、クライアント アプリケーション構成ファイルの <serviceAuthorization> を使用して設定できます。

コンストラクター

ServiceAuthorizationManager()

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

メソッド

CheckAccess(OperationContext)

指定された操作コンテキストの承認をチェックします。

CheckAccess(OperationContext, Message)

メッセージへのアクセスが必要なときに、指定された操作コンテキストの承認をチェックします。

CheckAccessCore(OperationContext)

指定された操作コンテキストの承認を、既定のポリシー評価に基づいてチェックします。

Equals(Object)

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

(継承元 Object)
GetAuthorizationPolicies(OperationContext)

ポリシー評価に参加するポリシーのセットを取得します。

GetHashCode()

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

(継承元 Object)
GetType()

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

(継承元 Object)
MemberwiseClone()

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

(継承元 Object)
ToString()

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

(継承元 Object)

適用対象

こちらもご覧ください