次の方法で共有


方法 : WindowsPrincipal プロジェクトを作成する

WindowsPrincipal オブジェクトを作成する方法には 2 種類あります。コードがロール ベース検証を繰り返し実行する必要があるのか、または 1 回実行するだけでよいのかによって、作成方法が決まります。

コードがロール ベース検証を繰り返し実行する必要がある場合は、次の手順のうち最初の手順を使用した方がオーバーヘッドが小さくなります。 コードによるロール ベース検証の実行が 1 回だけでよい場合は、次の手順のうち 2 番目の手順を使用して WindowsPrincipal オブジェクトを作成できます。

検証を繰り返し実行する場合の WindowsPrincipal オブジェクトを作成するには

  1. 静的プロパティ AppDomain.CurrentDomain が返す AppDomain オブジェクトで SetPrincipalPolicy メソッドを呼び出し、このメソッドに新しいポリシーの内容を示す PrincipalPolicy 列挙値を渡します。 サポートされている値は NoPrincipalUnauthenticatedPrincipal、および WindowsPrincipal です。 このメソッド呼び出しのコード例を次に示します。

    AppDomain.CurrentDomain.SetPrincipalPolicy(
        PrincipalPolicy.WindowsPrincipal);
    
    AppDomain.CurrentDomain.SetPrincipalPolicy( _
        PrincipalPolicy.WindowsPrincipal)
    
  2. ポリシーを設定したら、静的プロパティ Thread.CurrentPrincipal を使用して、現在の Windows ユーザーをカプセル化するプリンシパルを取得します。 プロパティの戻り値の型は IPrincipal であるため、結果を WindowsPrincipal 型にキャストする必要があります。 新しい WindowsPrincipal オブジェクトを、現在のスレッドに関連付けられたプリンシパルの値に初期化するコードを次に示します。

    WindowsPrincipal MyPrincipal = 
        (WindowsPrincipal) Thread.CurrentPrincipal;
    
    Dim MyPrincipal As WindowsPrincipal = _
        CType(Thread.CurrentPrincipal, WindowsPrincipal) 
    
  3. プリンシパル オブジェクトが作成されたら、いくつかの検証方法のいずれかを使用して、それを検証できます。 詳細については、「ロール ベース セキュリティ チェック」を参照してください。

検証を 1 回だけ実行する場合の WindowsPrincipal オブジェクトを作成するには

  1. 現在の Windows アカウントを問い合わせ、そのアカウントに関する情報を新しく作成された ID オブジェクトに配置する静的メソッド WindowsIdentity.GetCurrent を呼び出すことによって、新しい WindowsIdentity オブジェクトを初期化します。 新しい WindowsIdentity オブジェクトを作成して現在の認証済みユーザーに初期化するコードを次に示します。

    WindowsIdentity MyIdentity = WindowsIdentity.GetCurrent();
    
    Dim MyIdentity As WindowsIdentity = WindowsIdentity.GetCurrent()
    
  2. 新しい WindowsPrincipal オブジェクトを作成し、このオブジェクトに前の手順で作成した WindowsIdentity オブジェクトの値を渡します。

    WindowsPrincipal MyPrincipal = new WindowsPrincipal(MyIdentity);
    
    Dim MyPrincipal As New WindowsPrincipal(MyIdentity)
    
  3. プリンシパル オブジェクトが作成されたら、いくつかの検証方法のいずれかを使用して、それを検証できます。 詳細については、「ロール ベース セキュリティ チェック」を参照してください。

参照

概念

プリンシパル オブジェクトと ID オブジェクト