方法 : GenericPrincipal オブジェクトと GenericIdentity オブジェクトを作成するHow to: Create GenericPrincipal and GenericIdentity Objects

使用することができます、GenericIdentityクラスと組み合わせて、 GenericPrincipal Windows ドメインの独立に存在する認証スキームを作成するクラス。You can use the GenericIdentity class in conjunction with the GenericPrincipal class to create an authorization scheme that exists independent of a Windows domain.

GenericPrincipal オブジェクトを作成するにはTo create a GenericPrincipal object

  1. ID クラスの新しいインスタンスを作成し、インスタンスに付ける名前で初期化します。Create a new instance of the identity class and initialize it with the name you want it to hold. 新しい GenericIdentity オブジェクトを作成し、名前 MyUser で初期化するコードを次に示します。The following code creates a new GenericIdentity object and initializes it with the name MyUser.

    Dim MyIdentity As New GenericIdentity("MyUser")  
    
    GenericIdentity MyIdentity = new GenericIdentity("MyUser");  
    
  2. GenericPrincipal クラスの新しいインスタンスを作成し、前に作成した GenericIdentity オブジェクトと、プリンシパルに関連付けるロールを表す文字列の配列で、このインスタンスを初期化します。Create a new instance of the GenericPrincipal class and initialize it with the previously created GenericIdentity object and an array of strings that represent the roles that you want associated with this principal. 管理者のロールとユーザーのロールを表す文字列の配列を指定するコード例を次に示します。The following code example specifies an array of strings that represent an administrator role and a user role. GenericPrincipal は、前の GenericIdentity と文字列配列で初期化されます。The GenericPrincipal is then initialized with the previous GenericIdentity and the string array.

    Dim MyStringArray As String() = {"Manager", "Teller"}  
    DIm MyPrincipal As New GenericPrincipal(MyIdentity, MyStringArray)  
    
    String[] MyStringArray = {"Manager", "Teller"};  
    GenericPrincipal MyPrincipal = new GenericPrincipal(MyIdentity, MyStringArray);  
    
  3. 次のコードを使用して、プリンシパルを現在のスレッドに結合します。Use the following code to attach the principal to the current thread. これは、プリンシパルが何回かを検証する必要があります、アプリケーションで実行されているその他のコードを検証する必要がありますまたはで検証する必要がある場合、PrincipalPermissionオブジェクト。This is valuable in situations where the principal must be validated several times, it must be validated by other code running in your application, or it must be validated by a PrincipalPermission object. このような場合でも、プリンシパル オブジェクトをスレッドに結合せずにロール ベースの検証を行うことができます。You can still perform role-based validation on the principal object without attaching it to the thread. 詳細については、「プリンシパル オブジェクトの置き換え」を参照してください。For more information, see Replacing a Principal Object.

    Thread.CurrentPrincipal = MyPrincipal  
    
    Thread.CurrentPrincipal = MyPrincipal;  
    

Example

次のコード例では、GenericPrincipalGenericIdentity のインスタンスを作成する方法を示します。The following code example demonstrates how to create an instance of a GenericPrincipal and a GenericIdentity. このコードは、各オブジェクトの値をコンソールに表示します。This code displays the values of these objects to the console.

Imports System  
Imports System.Security.Principal  
Imports System.Threading  

Public Class Class1  

    Public Shared Sub Main()  
        ' Create generic identity.  
        Dim MyIdentity As New GenericIdentity("MyIdentity")  

        ' Create generic principal.  
        Dim MyStringArray As String() =  {"Manager", "Teller"}  
        Dim MyPrincipal As New GenericPrincipal(MyIdentity, MyStringArray)  

        ' Attach the principal to the current thread.  
        ' This is not required unless repeated validation must occur,  
        ' other code in your application must validate, or the   
        ' PrincipalPermisson object is used.   
        Thread.CurrentPrincipal = MyPrincipal  

        ' Print values to the console.  
        Dim Name As String = MyPrincipal.Identity.Name  
        Dim Auth As Boolean = MyPrincipal.Identity.IsAuthenticated  
        Dim IsInRole As Boolean = MyPrincipal.IsInRole("Manager")  

        Console.WriteLine("The Name is: {0}", Name)  
        Console.WriteLine("The IsAuthenticated is: {0}", Auth)  
        Console.WriteLine("Is this a Manager? {0}", IsInRole)  

    End Sub  

End Class  
using System;  
using System.Security.Principal;  
using System.Threading;  

public class Class1  
{  
    public static int Main(string[] args)  
    {  
    // Create generic identity.  
    GenericIdentity MyIdentity = new GenericIdentity("MyIdentity");  

    // Create generic principal.  
    String[] MyStringArray = {"Manager", "Teller"};  
    GenericPrincipal MyPrincipal =   
        new GenericPrincipal(MyIdentity, MyStringArray);  

    // Attach the principal to the current thread.  
    // This is not required unless repeated validation must occur,  
    // other code in your application must validate, or the   
    // PrincipalPermisson object is used.   
    Thread.CurrentPrincipal = MyPrincipal;  

    // Print values to the console.  
    String Name =  MyPrincipal.Identity.Name;  
    bool Auth =  MyPrincipal.Identity.IsAuthenticated;   
    bool IsInRole =  MyPrincipal.IsInRole("Manager");  

    Console.WriteLine("The Name is: {0}", Name);  
    Console.WriteLine("The IsAuthenticated is: {0}", Auth);  
    Console.WriteLine("Is this a Manager? {0}", IsInRole);  

    return 0;  
    }  
}  

実行されると、アプリケーションの出力は次のようになります。When executed, the application displays output similar to the following.

The Name is: MyIdentity  
The IsAuthenticated is: True  
Is this a Manager? True  

関連項目See Also

GenericIdentity
GenericPrincipal
PrincipalPermission
プリンシパル オブジェクトの置き換えReplacing a Principal Object
プリンシパル オブジェクトと ID オブジェクトPrincipal and Identity Objects