- java.lang.Object
-
- javax.security.auth.Policy
-
- com.sun.security.auth.PolicyFile
-
削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。JDK 1.4以降は、sun.security.provider.PolicyFileに置き換えられています。 このクラスの使用は推奨されていません。 このクラスは、Java SEの将来のバージョンで削除される可能性があります。
@Deprecated(since="1.4", forRemoval=true) public class PolicyFile extends Policy
このクラスはjavax.security.auth.Policyのデフォルトの実装を表します。Javaランタイム全体のポリシーを格納し、複数のファイルに存在する複数の静的ポリシー構成を合わせます。 ポリシー・ファイルを検出し、その情報をこの
Policyオブジェクトに読み込むアルゴリズムは次のとおりです。-
セキュリティ・プロパティauth.policy.url.1、auth.policy.url.2、...、auth.policy.url.Xに対してループ処理を行います。 それぞれのプロパティ値では、ロードされるポリシー・ファイルを参照する
URLを指定します。 各ポリシーが読み込まれ、ロードされます。 -
java.lang.Systemのプロパティであるjava.security.auth.policyにも、別のポリシー・ファイルを参照するURLを設定できます(実行時に -Dスイッチを使用する場合)。 このプロパティが定義されており、このプロパティの使用がセキュリティ・プロパティ・ファイルで許可されている(セキュリティ・プロパティpolicy.allowSystemPropertyがtrue)場合は、そのポリシーもロードされます。 - java.security.auth.policyプロパティが「==」(「=」ではない)を使用して定義されている場合、ほかに指定したポリシーはすべて無視され、このポリシーだけがロードされます。
grant signedBy "alias", codeBase "URL", principal principalClass "principalName", principal principalClass "principalName", ... { permission Type "name "action", signedBy "alias"; permission Type "name "action", signedBy "alias"; .... };前述の太字でない項目は表記のとおりである必要があります。ただし、後で説明するように、大文字小文字は関係なく、また省略可能な項目があります。 イタリックで示されている項目は、可変の項目です。付与エントリは、
grantで始まります。signedByとcodeBaseは名前と値のペアで、オプションです。 省略されている場合は、任意の署名者(署名なしのコードを含む)が一致し、任意のcodeBaseが一致します。principalの名前と値のペアはオプションではありません。 この場合のPolicy実装では、主体ベースのgrantエントリだけが許可されます。 principalClassはワイルドカード値*に設定することができ、その場合は任意のPrincipalクラスが一致します。 さらに、principalNameにワイルドカード値*を設定することで、任意のPrincipal名に一致させることができます。 principalNameに*を設定するときは、*を引用符で囲まないでください。アクセス権エントリは、
permissionで始まります。 上記のテンプレートのTypeという単語は、java.io.FilePermissionやjava.lang.RuntimePermissionなどの特定のアクセス許可のタイプです。"action"は
java.io.FilePermissionなど、多くのアクセス権のタイプで必須です(許可するファイル・アクセスのタイプを指定する)。 必要でないjava.lang.RuntimePermissionなどのカテゴリには必須ではありません - タイプ名の後に"name"値で指定された許可があるか、そうでない場合のいずれかです。アクセス権エントリの
signedByの名前と値のペアは省略可能です。 この値が存在する場合は、署名付きアクセス権であることを示します。 つまり、権限が付与されるためにpermissionクラス自体が与えられたエイリアスで署名されている必要があります。 たとえば、次のような付与エントリがあるとします。grant principal foo.com.Principal "Duke" { permission Foo "foobar", signedBy "FooSoft"; }この場合、
Foo.classアクセス権が「FooSoft」エイリアスによって署名されているか、あるいはFoo.classがシステム・クラス(つまりCLASSPATHにある)である場合に、Fooタイプのアクセス権に権限が付与されます。エントリ内にある項目は、指定された順番(
permission、Type、"name"、"action"の順)に並んでいる必要があります。 各エントリはセミコロンで終わります。文字の大文字小文字は、識別子(
permission、signedBy、codeBaseなど)では関係ありませんが、Typeや、値として渡される文字列にとっては重要です。ポリシー構成ファイルから取り出した2つのエントリの例を次に示します。
// if the code is comes from "foo.com" and is running as "Duke", // grant it read/write to all files in /tmp. grant codeBase "foo.com", principal foo.com.Principal "Duke" { permission java.io.FilePermission "/tmp/*", "read,write"; }; // grant any code running as "Duke" permission to read // the "java.vendor" Property. grant principal foo.com.Principal "Duke" { permission java.util.PropertyPermission "java.vendor";上記の
Policyの実装では、PrivateCredentialPermissionsに対する特別な処理をサポートしています。 grantエントリがPrivateCredentialPermissionで構成されており、そのPrivateCredentialPermissionの「主体クラス」や「主体名」が「self」の場合、指定したSubjectにSubject自体の非公開資格へのアクセス許可を与えます。 たとえば、Subjectである「Duke」に、Duke自体のa.b.Credentialへのアクセスを許可する例を次に示します。grant principal foo.com.Principal "Duke" { permission javax.security.auth.PrivateCredentialPermission "a.b.Credential self", "read"; };Subjectである「Duke」に、Duke自体のすべての非公開資格へのアクセスを許可する例を次に示します。grant principal foo.com.Principal "Duke" { permission javax.security.auth.PrivateCredentialPermission "* self", "read"; };名前に関係なくSolarisPrincipalとして認証されたすべてのSubjectに、Subject自体の非公開資格へのアクセスを許可する例を次に示します。grant principal com.sun.security.auth.SolarisPrincipal * { permission javax.security.auth.PrivateCredentialPermission "* self", "read"; };すべてのSubjectに、Subject自体の非公開資格へのアクセスを許可する例を次に示します。grant principal * * { permission javax.security.auth.PrivateCredentialPermission "* self", "read"; }; -
セキュリティ・プロパティauth.policy.url.1、auth.policy.url.2、...、auth.policy.url.Xに対してループ処理を行います。 それぞれのプロパティ値では、ロードされるポリシー・ファイルを参照する
-
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 PolicyFile()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。Policyオブジェクトを初期化し、デフォルトのポリシー構成ファイルをPolicyオブジェクトに読み込みます。
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 具象メソッド 非推奨のメソッド 修飾子と型 メソッド 説明 PermissionCollectiongetPermissions(Subject subject, CodeSource codesource)削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このPolicyを検査し、指定したSubjectやCodeSourceに付与したアクセス権を返します。voidrefresh()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。すべてのポリシー・ファイルを読込み直すことで、Policyオブジェクトをリフレッシュします。
-
-
-
メソッドの詳細
-
refresh
public void refresh()
削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。すべてのポリシー・ファイルを読込み直すことで、Policyオブジェクトをリフレッシュします。- 定義:
refresh、クラス:Policy- 例外:
SecurityException- 呼出し元にPolicyをリフレッシュするアクセス権がない場合。
-
getPermissions
public PermissionCollection getPermissions(Subject subject, CodeSource codesource)
削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。このPolicyを検査し、指定したSubjectやCodeSourceに付与したアクセス権を返します。エントリ内で指定したcodeBaseやsignedByの値を使用して構築された
CodeSourceに、このメソッドに渡されるCodeSourceが含まれる(implies)場合、およびこのメソッドに渡されるSubjectにエントリ内で指定したすべての主体が含まれる場合は、特定のgrantエントリに対するアクセス権が返されます。grantエントリで指定した各
Principal「P1」に対して、次の2つの条件のうちどちらかを満たす場合は、このメソッドに渡されるSubjectに、エントリで指定したすべての主体が含まれます。-
SubjectがPrincipal「P2」を持ち、P2.getClass().getName()の値がP1のクラス名に、P2.getName()の値がP1の名前に、それぞれ等しい。 - P1は
com.sun.security.auth.PrincipalComparatorを実装し、渡されたSubjectのP1.impliesである。
この
Policyでは、PrivateCredentialPermissionsに対する特別な処理を実装しています。 このメソッドがPrincipalクラスと名前に「self」を指定したPrivateCredentialPermissionを検出するとき、返されるPermissionCollectionにそのPermissionを追加しません。 代わりに、与えられたSubjectに関連付けられた各Principalに対して、新しいPrivateCredentialPermissionを構築します。 それぞれの新しいPrivateCredentialPermissionにはそれぞれのPrincipalのクラスと名前のほかに、当初与えられたアクセス権で指定したのと同じ資格クラスが含まれます。- 定義:
getPermissions、クラス:Policy- パラメータ:
subject- このSubjectに与えられたアクセス権と、追加で渡したCodeSourceが返されます。codesource- このCodeSourceに与えられたアクセス権と、追加で渡したSubjectが返されます。- 戻り値:
- 渡した
SubjectCodeSourceに与えられたアクセス権。
-
-
-