次の方法で共有


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

注意

この記事は Windows に適用されます。

ASP.NET Core の詳細については、ASP.NET Core のセキュリティに関する記事を参照してください。

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

コードが役割ベースの検証を繰り返し実行する必要がある場合、次の最初の手順のほうが、生成されるオーバーヘッドが少なくなります。 コードが役割ベースの検証を 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. 静的な WindowsIdentity.GetCurrent メソッドを呼び出して新しい WindowsIdentity オブジェクトを初期化します。このメソッドは、現在の Windows アカウントに対してクエリを実行し、そのアカウントに関する情報を新規作成された ID オブジェクトに配置します。 次のコードは、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. プリンシパル オブジェクトが作成されると、いくつかのメソッドのいずれかを使用して検証できます。

関連項目