public abstract class Policy extends Object
実行時にインストールされる Policy オブジェクトは、常に 1 つだけです。Policy オブジェクトは、setPolicy
メソッドを呼び出すことでインストールできます。インストールされた Policy オブジェクトを取得するには、getPolicy
メソッドを呼び出します。
実行時に Policy オブジェクトがインストールされなかった場合は、getPolicy
を呼び出すと、デフォルトの Policy 実装のインスタンス (この abstract クラスのデフォルトのサブクラス実装) がインストールされます。デフォルトの Policy 実装を変更するには、(Java セキュリティープロパティーファイルの) policy.provider セキュリティープロパティーの値を、希望する Policy サブクラス実装の完全指定名に変更します。Java セキュリティープロパティーファイルは、<JAVA_HOME>/lib/security/java.security という名前のファイルに格納されています。<JAVA_HOME> は java.home システムプロパティーの値を参照しており、JRE のインストールディレクトリを示します。
アプリケーションコードは、Policy を直接サブクラス化して、カスタム実装を提供できます。また、標準型の getInstance
ファクトリメソッドを 1 つ呼び出すことで、Policy オブジェクトのインスタンスを構築できます。デフォルトのポリシー型は JavaPolicy です。
Policy インスタンスのインストール (デフォルトのインストールか、setPolicy
の呼び出しによるインストール) が完了したあと、Java ランタイムは、(ProtectionDomain にカプセル化された) コードを実行することによってセキュリティーマネージャーで保護された操作を実行できるかどうかを判断する必要があるときに、implies
メソッドを呼び出します。Policy オブジェクトがポリシーデータを取り出す方法は、Policy 実装そのものによって異なります。たとえば、ポリシーデータを、フラットな ASCII ファイル、Policy クラスの直列化されたバイナリファイル、またはデータベースに保存できます。
refresh
メソッドにより、ポリシーオブジェクトのデータがリフレッシュまたは再読み込みされます。この操作は実装に依存します。たとえば、ポリシーオブジェクトがそのデータを設定ファイルに格納する場合、refresh
を呼び出すと、ポリシー構成ファイルが再度読み込まれます。リフレッシュ操作がサポートされていない場合、このメソッドは何も行いません。リフレッシュされたポリシーは、特定の ProtectionDomain のクラスに対して有効でない場合があります。これは、Policy プロバイダの implies
メソッドの実装と、PermissionCollection のキャッシュ方法に左右されます。
Provider
, ProtectionDomain
, Permission
修飾子と型 | クラスと説明 |
---|---|
static interface |
Policy.Parameters
このインタフェースは、Policy パラメータのマーカーインタフェースです。
|
修飾子と型 | フィールドと説明 |
---|---|
static PermissionCollection |
UNSUPPORTED_EMPTY_COLLECTION
読み取り専用の空の PermissionCollection インスタンスです。
|
コンストラクタと説明 |
---|
Policy() |
修飾子と型 | メソッドと説明 |
---|---|
static Policy |
getInstance(String type, Policy.Parameters params)
指定された型の Policy オブジェクトを返します。
|
static Policy |
getInstance(String type, Policy.Parameters params, Provider provider)
指定された型の Policy オブジェクトを返します。
|
static Policy |
getInstance(String type, Policy.Parameters params, String provider)
指定された型の Policy オブジェクトを返します。
|
Policy.Parameters |
getParameters()
Policy パラメータを返します。
|
PermissionCollection |
getPermissions(CodeSource codesource)
指定された CodeSource に付与されたアクセス権のセットを含む PermissionCollection オブジェクトを返します。
|
PermissionCollection |
getPermissions(ProtectionDomain domain)
指定された ProtectionDomain に付与されたアクセス権のセットを含む PermissionCollection オブジェクトを返します。
|
static Policy |
getPolicy()
インストール済みの Policy オブジェクトを返します。
|
Provider |
getProvider()
この Policy の Provider を返します。
|
String |
getType()
この Policy の型を返します。
|
boolean |
implies(ProtectionDomain domain, Permission permission)
ProtectionDomain に許可されたアクセス権についてグローバルポリシーを評価し、そのアクセス権が許可されているかどうかを判定します。
|
void |
refresh()
ポリシー構成をリフレッシュまたは再読み込みします。
|
static void |
setPolicy(Policy p)
システム全体の Policy オブジェクトを設定します。
|
public static final PermissionCollection UNSUPPORTED_EMPTY_COLLECTION
public static Policy getPolicy()
setPolicy
への呼び出しによって変更が可能なので、キャッシュしないでください。このメソッドは最初に SecurityPermission("getPolicy")
アクセス権を使用して SecurityManager.checkPermission
を呼び出し、Policy オブジェクトを取得してもよいかどうかを確認します。SecurityException
- セキュリティーマネージャーが存在し、セキュリティーマネージャーの checkPermission
メソッドが Policy オブジェクトの取得を許可しない場合。SecurityManager.checkPermission(Permission)
, setPolicy(java.security.Policy)
public static void setPolicy(Policy p)
SecurityPermission("setPolicy")
アクセス権を使用して SecurityManager.checkPermission
を呼び出し、Policy を設定してもよいかどうかを確認します。p
- 新規システム Policy オブジェクト。SecurityException
- セキュリティーマネージャーが存在し、セキュリティーマネージャーの checkPermission
メソッドが Policy の設定を許可しない場合。SecurityManager.checkPermission(Permission)
, getPolicy()
public static Policy getInstance(String type, Policy.Parameters params) throws NoSuchAlgorithmException
このメソッドは、最優先の Provider から順に、登録済みのセキュリティープロバイダのリストをトラバースします。指定された型をサポートする最初の Provider の PolicySpi 実装をカプセル化する新しい Policy オブジェクトが返されます。
登録済みプロバイダのリストは、Security.getProviders()
メソッド経由で取得できます。
type
- 指定された Policy 型。標準の Policy 型のリストについては、Java 暗号化アーキテクチャー標準アルゴリズム名のドキュメントの Policy のセクションを参照。params
- Policy のパラメータ。null の場合もある。SecurityException
- 呼び出し側に、指定された型の Policy インスタンスを取得するアクセス権がない場合。NullPointerException
- 指定された型が null の場合。IllegalArgumentException
- 指定されたパラメータが、選択されたプロバイダの PolicySpi 実装によって認識されない場合。NoSuchAlgorithmException
- 指定された型の PolicySpi 実装をサポートするプロバイダが存在しない場合。Provider
public static Policy getInstance(String type, Policy.Parameters params, String provider) throws NoSuchProviderException, NoSuchAlgorithmException
指定されたプロバイダの PolicySpi 実装をカプセル化する新しい Policy オブジェクトが返されます。プロバイダリストに登録されたプロバイダを指定する必要があります。
登録済みプロバイダのリストは、Security.getProviders()
メソッド経由で取得できます。
type
- 指定された Policy 型。標準の Policy 型のリストについては、Java 暗号化アーキテクチャー標準アルゴリズム名のドキュメントの Policy のセクションを参照。params
- Policy のパラメータ。null の場合もある。provider
- プロバイダ。SecurityException
- 呼び出し側に、指定された型の Policy インスタンスを取得するアクセス権がない場合。NullPointerException
- 指定された型が null の場合。IllegalArgumentException
- 指定されたプロバイダが null か空の場合、または指定されたパラメータが指定されたプロバイダの PolicySpi 実装によって認識されない場合。NoSuchProviderException
- 指定されたプロバイダがセキュリティープロバイダリストに登録されていない場合。NoSuchAlgorithmException
- 指定されたプロバイダが、指定された型の PolicySpi 実装をサポートしない場合。Provider
public static Policy getInstance(String type, Policy.Parameters params, Provider provider) throws NoSuchAlgorithmException
指定された Provider オブジェクトの PolicySpi 実装をカプセル化する新しい Policy オブジェクトが返されます。指定された Provider オブジェクトは、プロバイダリストに登録する必要はありません。
type
- 指定された Policy 型。標準の Policy 型のリストについては、Java 暗号化アーキテクチャー標準アルゴリズム名のドキュメントの Policy のセクションを参照。params
- Policy のパラメータ。null の場合もある。provider
- Provider。SecurityException
- 呼び出し側に、指定された型の Policy インスタンスを取得するアクセス権がない場合。NullPointerException
- 指定された型が null の場合。IllegalArgumentException
- 指定されたプロバイダが null の場合、または指定されたパラメータが指定されたプロバイダの PolicySpi 実装によって認識されない場合。NoSuchAlgorithmException
- 指定されたプロバイダが、指定された型の PolicySpi 実装をサポートしない場合。Provider
public Provider getProvider()
この Policy インスタンスは、Policy.getInstance
の呼び出しによって取得された場合にかぎり Provider を持ちます。そうでない場合は、このメソッドは null を返します。
public String getType()
この Policy インスタンスは、Policy.getInstance
の呼び出しによって取得された場合にかぎり型を持ちます。そうでない場合は、このメソッドは null を返します。
public Policy.Parameters getParameters()
この Policy インスタンスは、Policy.getInstance
の呼び出しによって取得された場合にかぎりパラメータを持ちます。そうでない場合は、このメソッドは null を返します。
public PermissionCollection getPermissions(CodeSource codesource)
この操作はすべてのポリシー実装ではサポートされない可能性があるため、アプリケーションでこのメソッドを呼び出すことはお勧めしません。アプリケーションは、ポリシーチェックを行うために、もっぱら implies
メソッドを使用するべきです。アプリケーションでどうしても getPermissions メソッドを呼び出す必要がある場合は、getPermissions(ProtectionDomain)
を呼び出すようにしてください。
このメソッドのデフォルト実装は、Policy.UNSUPPORTED_EMPTY_COLLECTION を返します。ポリシー実装が CodeSource に付与されたアクセス権のセットを返すことができる場合、このメソッドはオーバーライドできます。
codesource
- 返される PermissionCollection が付与されている CodeSource。public PermissionCollection getPermissions(ProtectionDomain domain)
この操作はすべてのポリシー実装ではサポートされない可能性があるため、アプリケーションでこのメソッドを呼び出すことはお勧めしません。アプリケーションは、ポリシーチェックを行うために implies
メソッドを使用するべきです。
このメソッドのデフォルト実装は、最初に、getPermissions(CodeSource)
から返されるアクセス権 (指定された ProtectionDomain から取得される CodeSource) と、指定された ProtectionDomain 内にあるアクセス権を取得します。次に、これらすべてのアクセス権が結合され、新しい単一の PermissionCollection オブジェクトとして返されます。getPermissions(CodeSource)
が Policy.UNSUPPORTED_EMPTY_COLLECTION を返した場合、このメソッドは、指定された ProtectionDomain 内のアクセス権を、新しい単一の PermissionCollection オブジェクトとして返します。
ポリシー実装が ProtectionDomain に付与されたアクセス権のセットを返すことができる場合、このメソッドはオーバーライドできます。
domain
- 返される PermissionCollection が付与されている ProtectionDomain。public boolean implies(ProtectionDomain domain, Permission permission)
domain
- 判定対象の ProtectionDomainpermission
- 含まれているかどうかを判定する Permission オブジェクト。ProtectionDomain
public void refresh()
refresh
を呼び出すと、ファイルが再読み込みされます。
このメソッドのデフォルト実装では何の処理も行われません。ポリシー実装によってリフレッシュ操作がサポートされている場合、このメソッドはオーバーライドされます。
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.