- 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
- 関連項目:
セキュリティ・プロパティ
-
-
コンストラクタのサマリー
コンストラクタ 修飾子 コンストラクタ 説明 protectedPolicy()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。唯一のコンストラクタです。
-
メソッドのサマリー
すべてのメソッド staticメソッド インスタンス・メソッド 抽象メソッド 具象メソッド 非推奨メソッド 修飾子と型 メソッド 説明 abstract PermissionCollectiongetPermissions(Subject subject, CodeSource cs)削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。指定したCodeSourceに関連付けられたPrincipalに付与されたPermissionを取得します。static PolicygetPolicy()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。インストール済みのPolicyオブジェクトを返します。abstract voidrefresh()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。Policyのリフレッシュおよび再ロードを実行します。static voidsetPolicy(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をリフレッシュする権限がない場合。
-
-