public abstract class Policy extends Object
実行時にインストールされるPolicyオブジェクトは、常に1つだけです。Policyオブジェクトは、setPolicy
メソッドを呼び出すことでインストールできます。インストールされたPolicyオブジェクトを取得するには、getPolicy
メソッドを呼び出します。
実行時にPolicyオブジェクトがインストールされなかった場合は、getPolicy
を呼び出すと、デフォルトのPolicy実装のインスタンス(この抽象クラスのデフォルトのサブクラス実装)がインストールされます。デフォルトのPolicy実装を変更するには、policy.provider
セキュリティ・プロパティの値を希望するPolicyサブクラス実装の完全修飾名に設定します。
アプリケーション・コードは、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, 2014, Oracle and/or its affiliates. All rights reserved.