PrincipalPermission オブジェクト

ロール ベース セキュリティ モデルでは、コード アクセス セキュリティ モデルで使用される許可オブジェクトに似た許可オブジェクトがサポートされます。 この PrincipalPermission オブジェクトは、実行するために特定のプリンシパル クラスに必要とされる ID とロールを表します。 PrincipalPermission クラスは、強制セキュリティ チェックと宣言セキュリティ チェックの両方に使用できます。

PrincipalPermission クラスを強制的に実装するには、このクラスの新しいインスタンスを作成し、コードにアクセスするためにユーザー側に要求する名前とロールで初期化します。 このオブジェクトの新しいインスタンスを "Joan" という ID と "Teller" というロールで初期化するコードを次に示します。

String id = "Joan";
String role = "Teller";
PrincipalPermission principalPerm = new PrincipalPermission(id, role);
Dim id As String = "Joan"
Dim role As String = "Teller"
Dim principalPerm As New PrincipalPermission(id, role)

同様の許可を、PrincipalPermissionAttribute クラスを使用して宣言で作成できます。 ID を "Joan" に、ロールを "Teller" に宣言で初期化するコード例を次に示します。

[PrincipalPermissionAttribute(SecurityAction.Demand, Name = "Joan", Role = "Teller")]
<PrincipalPermissionAttribute(SecurityAction.Demand, Name := "Joan", Role := "Teller")>

セキュリティ チェックの実行では、指定された ID とロールの両方が一致するとチェックが成功します。 ただし、PrincipalPermission オブジェクトを作成するときに null の ID 文字列を渡すと、プリンシパルの ID は任意の値をとることができます。 同様に、null のロール文字列を渡すと、プリンシパルは任意のロールのメンバーでよい (またはどのロールにも属さなくてもよい) ことを示します。 宣言セキュリティの場合は、どちらか一方のプロパティを省略しても同じ結果を得ることができます。 たとえば、次のコードでは PrincipalPermissionAttribute を使用して、プリンシパルは任意の名前でよいが、窓口係というロールを持つ必要があることを宣言的に示しています。

[PrincipalPermissionAttribute(SecurityAction.Demand, Role = "Teller")]
<PrincipalPermissionAttribute(SecurityAction.Demand, Role := "Teller")>

参照

参照

PrincipalPermission

PrincipalPermissionAttribute

概念

ロール ベース セキュリティ

その他の技術情報

セキュリティの基本概念