- java.lang.Object
-
- javax.security.auth.Policy
-
@Deprecated(since="1.4", forRemoval=true) public abstract class Policy extends Object
削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。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の問い合わせを実行する手段を提供します。 このクラスは、Java SEの将来のバージョンで削除される可能性があります。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.UnixPrincipal "duke" { permission java.io.FilePermission "/home/duke", "read, write"; };
このgrantエントリは、 "foo"によって署名された"foo.com"のコードと、dukeという名前のUnixPrincipal
として実行されるコードが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.UnixPrincipal "duke", Principal com.sun.security.auth.UnixNumericUserPrincipal "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
- 関連項目:
セキュリティ・プロパティ
-
-
コンストラクタのサマリー
コンストラクタ 修飾子 コンストラクタ 説明 protected
Policy()
削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。唯一のコンストラクタです。
-
メソッドのサマリー
すべてのメソッド staticメソッド インスタンス・メソッド 抽象メソッド 具象メソッド 非推奨メソッド 修飾子と型 メソッド 説明 abstract PermissionCollection
getPermissions(Subject subject, CodeSource cs)
削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。指定したCodeSource
に関連付けられたPrincipalに付与されたPermissionを取得します。static Policy
getPolicy()
削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。インストール済みのPolicyオブジェクトを返します。abstract void
refresh()
削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。Policyのリフレッシュおよび再ロードを実行します。static void
setPolicy(Policy policy)
削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。システム全体のPolicyオブジェクトを設定します。
-
-
-
メソッドの詳細
-
getPolicy
public static Policy getPolicy()
削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。インストール済みのPolicyオブジェクトを返します。 このメソッドは最初にAuthPermission("getPolicy")
権限でSecurityManager.checkPermission
を呼び出し、呼出し側がPolicyオブジェクトを取得する権限を持っているどうかを確認します。- 戻り値:
- インストール済みのPolicy。 戻り値は
null
にならない。 - 例外:
SecurityException
- 現在のスレッドがPolicyオブジェクトを取得する権限を持たない場合。- 関連項目:
setPolicy(javax.security.auth.Policy)
-
setPolicy
public static void setPolicy(Policy policy)
削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。システム全体のPolicyオブジェクトを設定します。 このメソッドは最初にAuthPermission("setPolicy")
権限でSecurityManager.checkPermission
を呼び出し、呼出し側がPolicyを設定する権限を持っているどうかを確認します。- パラメータ:
policy
- 新規システムPolicyオブジェクト。- 例外:
SecurityException
- 現在のスレッドがPolicyを設定する権限を持たない場合。- 関連項目:
getPolicy()
-
getPermissions
public abstract PermissionCollection getPermissions(Subject subject, CodeSource cs)
削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。指定したCodeSource
に関連付けられたPrincipalに付与されたPermissionを取得します。- パラメータ:
subject
-Subject
。これに関連付けられたPrincipalと、指定されたCodeSource
によって、このメソッドによって返されるPermissionが決まる。 このパラメータはnull
になる可能性がある。cs
-CodeSource
によって指定されたコード。これと、指定されたSubject
によって、このメソッドによって返されるPermissionが決まる。 このパラメータはnull
になる可能性がある。- 戻り値:
- 提供されたsubjectおよびcsパラメータで指定されたすべての
Subject
およびコードに付与されたPermissionのコレクション。
-
refresh
public abstract void refresh()
削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。Policyのリフレッシュおよび再ロードを実行します。このメソッドは、このオブジェクトに、現在のポリシーのリフレッシュや再ロードを行わせます。 この処理は実装に依存します。 たとえばPolicyオブジェクトがファイルに格納されている場合、
refresh
を呼び出すと、ファイルがもう一度読み取られることになります。- 例外:
SecurityException
- 呼出し側に、Policyをリフレッシュする権限がない場合。
-
-