- java.lang.Object
-
- javax.security.auth.Policy
-
- 直系の既知のサブクラス:
PolicyFile
非推奨。JDK Version 1.4で、java.security.Policyに置き換えられました。java.security.Policyには次のメソッドが存在します。public PermissionCollection getPermissions (java.security.ProtectionDomain pd)また、ProtectionDomainには次のコンストラクタがあります。public ProtectionDomain (CodeSource cs, PermissionCollection permissions, ClassLoader loader, Principal[] principals)これら2つのAPIは、呼出し側に、PrincipalベースのPermissionエントリ用Policyの問い合わせを実行する手段を提供します。
@Deprecated(since="1.4") public abstract class Policy extends Object
Subjectベースの承認のシステム・ポリシーを表すabstractクラスです。 このクラスのサブクラス実装では、Subjectベースのアクセス制御
Policyを指定する方法を提供します。Policyオブジェクトは、次の方法で、Principalとして実行しているコードに付与されたPermissionのセットを問い合わせることができます。policy = Policy.getPolicy(); PermissionCollection perms = policy.getPermissions(subject, codeSource);Policyオブジェクトはローカル・ポリシーを参照して、適切なPermissionsオブジェクトを返します。このオブジェクトは、提供されたsubjectに関連付けられたPrincipalに付与された権限、および提供されたcodeSourceで指定されたコードに付与された権限を持ちます。Policyには、次に示す情報が格納されます。 この例は、単にデフォルトのPolicy実装の構文を表しています。 このクラスのサブクラス実装では別の構文を実装することもでき、ファイル、データベース、サーバーといった任意のソースからPolicyを取得することもできます。Policy内の各エントリは、grantエントリとして表されます。 各grantエントリでは、コード・ベース、コードの署名者、およびPrincipalから成るトリプレット、そしてそのトリプレットに付与されたPermissionを指定します。grant CodeBase ["URL"], Signedby ["signers"], Principal [Principal_Class] "Principal_Name" { Permission Permission_Class ["Target_Name"] [, "Permission_Actions"] [, signedBy "SignerName"]; };名前/値ペアのトリプレットのうち、CodeBaseコンポーネントとSignedbyコンポーネントは省略可能です。 それらが存在しない場合、コードベースは一致し、署名者(符号なしコードを含む)は一致します。 次に例を示します。grant CodeBase "foo.com", Signedby "foo", Principal com.sun.security.auth.SolarisPrincipal "duke" { permission java.io.FilePermission "/home/duke", "read, write"; };このgrantエントリは、fooによって署名され、dukeという名前でSolarisPrincipalとして実行されているfoo.comのコードが、1つのPermissionを持つことを指定しています。 このPermissionは、/home/dukeディレクトリへのファイルの読書きを実行コードに許可します。特定の
Principalとして実行するには、コードでSubject.doAs(subject, ...)メソッドを呼び出します。 このメソッドを呼び出すと、指定したSubjectに関連付けられたすべてのPrincipalとしてコードが実行されます。 このPolicyおよびこのPolicyに付与されたPermissionは、Subject.doAsの呼出し後に有効になります。1つのgrantエントリに複数のPrincipalを指定することも可能です。 指定されたPermissionが
Subjectに付与されるためには、grantエントリ内のすべてのPrincipalがSubject.doAsに渡されるSubjectに関連付けられている必要があります。grant Principal com.sun.security.auth.SolarisPrincipal "duke", Principal com.sun.security.auth.SolarisNumericUserPrincipal "0" { permission java.io.FilePermission "/home/duke", "read, write"; permission java.net.SocketPermission "duke.com", "connect"; };このエントリでは、dukeと0の両方で実行されるコードに、dukeのホーム・ディレクトリ内のファイルへの読書きアクセス権を付与し、さらにduke.comへのソケット接続を行う権利を付与します。Principalベースでないgrantエントリは、この
Policyでは許可されません。 したがって、次のようなgrantエントリはgrant CodeBase "foo.com", Signedby "foo" { permission java.io.FilePermission "/tmp/scratch", "read, write"; };拒否されます。 このようなアクセス権はjava.security.Policyに記述する必要があります。デフォルトの
Policy実装は、auth.policy.providerセキュリティ・プロパティの値に、目的のPolicy実装クラスの完全修飾名を設定することにより変更できます。- 導入されたバージョン:
- 1.4
- 関連項目:
セキュリティ・プロパティ
-
-
コンストラクタのサマリー
コンストラクタ 修飾子 コンストラクタ 説明 protectedPolicy()非推奨。唯一のコンストラクタです。
-
メソッドのサマリー
すべてのメソッド staticメソッド インスタンス・メソッド 抽象メソッド 具象メソッド 非推奨のメソッド 修飾子と型 メソッド 説明 abstract PermissionCollectiongetPermissions(Subject subject, CodeSource cs)非推奨。指定したCodeSourceに関連付けられたPrincipalに付与されたPermissionを取得します。static PolicygetPolicy()非推奨。インストール済みのPolicyオブジェクトを返します。abstract voidrefresh()非推奨。Policyのリフレッシュおよび再ロードを実行します。static voidsetPolicy(Policy policy)非推奨。システム全体のPolicyオブジェクトを設定します。
-
-
-
メソッドの詳細
-
getPolicy
public static Policy getPolicy()
非推奨。インストール済みのPolicyオブジェクトを返します。 このメソッドは最初にAuthPermission("getPolicy")権限でSecurityManager.checkPermissionを呼び出し、呼出し側がPolicyオブジェクトを取得する権限を持っているどうかを確認します。- 戻り値:
- インストール済みのPolicy。 戻り値は
nullにならない。 - 例外:
SecurityException- 現在のスレッドがPolicyオブジェクトを取得する権限を持たない場合。- 関連項目:
setPolicy(javax.security.auth.Policy)
-
setPolicy
public static void setPolicy(Policy policy)
非推奨。システム全体のPolicyオブジェクトを設定します。 このメソッドは最初にAuthPermission("setPolicy")権限でSecurityManager.checkPermissionを呼び出し、呼出し側がPolicyを設定する権限を持っているどうかを確認します。- パラメータ:
policy- 新規システムPolicyオブジェクト。- 例外:
SecurityException- 現在のスレッドがPolicyを設定する権限を持たない場合。- 関連項目:
getPolicy()
-
getPermissions
public abstract PermissionCollection getPermissions(Subject subject, CodeSource cs)
非推奨。指定したCodeSourceに関連付けられたPrincipalに付与されたPermissionを取得します。- パラメータ:
subject-Subject。これに関連付けられたPrincipalと、指定されたCodeSourceによって、このメソッドによって返されるPermissionが決まる。 このパラメータはnullになる可能性がある。cs-CodeSourceによって指定されたコード。これと、指定されたSubjectによって、このメソッドによって返されるPermissionが決まる。 このパラメータはnullになる可能性がある。- 戻り値:
- 提供されたsubjectおよびcsパラメータで指定されたすべての
Subjectおよびコードに付与されたPermissionのコレクション。
-
refresh
public abstract void refresh()
非推奨。Policyのリフレッシュおよび再ロードを実行します。このメソッドは、このオブジェクトに、現在のポリシーのリフレッシュや再ロードを行わせます。 この処理は実装に依存します。 たとえばPolicyオブジェクトがファイルに格納されている場合、
refreshを呼び出すと、ファイルがもう一度読み取られることになります。- 例外:
SecurityException- 呼出し側に、Policyをリフレッシュする権限がない場合。
-
-