PrincipalPermission クラス
アセンブリ: mscorlib (mscorlib.dll 内)
構文
<SerializableAttribute> _ <ComVisibleAttribute(True)> _ Public NotInheritable Class PrincipalPermission Implements IPermission, IUnrestrictedPermission, ISecurityEncodable
[SerializableAttribute] [ComVisibleAttribute(true)] public sealed class PrincipalPermission : IPermission, IUnrestrictedPermission, ISecurityEncodable
[SerializableAttribute] [ComVisibleAttribute(true)] public ref class PrincipalPermission sealed : IPermission, IUnrestrictedPermission, ISecurityEncodable
コンストラクタにユーザー名とロールの ID 情報を渡すことにより、PrincipalPermission を使用して、この情報と一致するアクティブ プリンシパルの ID を要求できます。
アクティブ IPrincipal および関連付けられた IIdentity と一致するためには、指定した ID とロールの両方が一致する必要があります。null 参照 (Visual Basic では Nothing) ID 文字列を使用する場合は、すべての ID と一致する要求として解釈されます。null 参照 (Visual Basic では Nothing) ロール文字列を使用すると、すべてのロールと一致します。このため、name または role の null 参照 (Visual Basic では Nothing) パラメータを PrincipalPermission に渡すと、すべての IPrincipal の ID とロールに一致します。IIdentity が認証されたエンティティまたは認証されていないエンティティのどちらを表しているかを判断するだけの PrincipalPermission も構築できます。この場合、name と role は無視されます。
その他のほとんどのアクセス許可とは異なり、PrincipalPermission は、CodeAccessPermission を拡張しません。ただし、これは IPermission インターフェイスを実装します。これは、PrincipalPermission が、コードのアクセス許可ではないためです。つまり、このアクセス許可は、実行しているアセンブリの ID に基づいて与えられるものではありません。その代わりに、コード アクセスとコード ID アクセス許可で実行する場合と一貫した方法で、現在のユーザー ID に対して、操作 (Demand、Union、Intersect など) を実行することをコードに許可します。
重要 : |
---|
プリンシパルのアクセス許可を要求する前に、現在のアプリケーション ドメインのプリンシパル ポリシーを列挙値 WindowsPrincipal に設定する必要があります。既定では、プリンシパル ポリシーは UnauthenticatedPrincipal に設定されます。プリンシパル ポリシーを WindowsPrincipal に設定しないと、プリンシパルのアクセス許可の要求は失敗します。プリンシパルのアクセス許可を要求する前に、次のコードを実行する必要があります。 AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal). |
2 人の異なる管理者権限を持つユーザーを表す 2 つの PrincipalPermission オブジェクトを作成し、2 つの和集合を形成して、要求を行う例を次に示します。Demand は、アクティブな IPrincipal の実装が、マネージャのロールを持つユーザー Bob、またはスーパバイザのロールを持つユーザー Louise のいずれかを表す場合にだけ成功します。
Dim id1 As String = "Bob" Dim role1 As String = "Manager" Dim PrincipalPerm1 As New PrincipalPermission(id1, role1) Dim id2 As String = "Louise" Dim role2 As String = "Supervisor" Dim PrincipalPerm2 As New PrincipalPermission(id2, role2) PrincipalPerm1.Union(PrincipalPerm2).Demand()
String id1 = "Bob"; String role1 = "Manager"; PrincipalPermission PrincipalPerm1 = new PrincipalPermission(id1, role1); String id2 = "Louise"; String role2 = "Supervisor"; PrincipalPermission PrincipalPerm2 = new PrincipalPermission(id2, role2); (PrincipalPerm1.Union(PrincipalPerm2)).Demand();
String^ id1 = "Bob"; String^ role1 = "Manager"; PrincipalPermission^ PrincipalPerm1 = gcnew PrincipalPermission( id1,role1 ); String^ id2 = "Louise"; String^ role2 = "Supervisor"; PrincipalPermission^ PrincipalPerm2 = gcnew PrincipalPermission( id2,role2 ); (PrincipalPerm1->Union( PrincipalPerm2 ))->Demand();
System.Security.Permissions.PrincipalPermission
プラットフォーム
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
- PrincipalPermission クラスのページへのリンク