|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjavax.security.auth.Policy
public PermissionCollection getPermissions
(java.security.ProtectionDomain pd)
また、ProtectionDomain には次のコンストラクタがあります。
public ProtectionDomain
(CodeSource cs,
PermissionCollection permissions,
ClassLoader loader,
Principal[] principals)
これら 2 つの API は、呼び出し側に、Principal ベースの Permission エントリ用 Policy の問い合わせを実行する手段を提供します。
@Deprecated public abstract class Policy
Subject ベースの承認のシステムポリシーを表す abstract クラスです。このクラスのサブクラス実装では、Subject ベースのアクセス制御 Policy を指定する方法を提供します。
Policy オブジェクトは、次の方法で、Principal として実行しているコードに付与された Permission のセットをクエリーすることができます。
policy = Policy.getPolicy();
PermissionCollection perms = policy.getPermissions(subject,
codeSource);
Policy オブジェクトでは、ローカルポリシーを参照して、適切な Permissions オブジェクトを返します。この Permissions オブジェクトには、指定した subject に関連付けられた Principal に付与され、かつ codeSource で指定されたコードに付与された Permission があります。
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.SolarisPrincipal "duke" {
permission java.io.FilePermission "/home/duke", "read, write";
};
この grant エントリでは、foo が署名した、名前 duke の SolarisPrincipal で実行している foo.com からのコードに、Permission が 1 つあることを指定しています。この Permission では、/home/duke ディレクトリへのファイルの読み書きを、実行するコードに許可します。
ある Principal で「実行」するには、コードで Subject.doAs(subject, ...) メソッドを呼び出します。このメソッドを呼び出すと、指定した Subject に関連付けられたすべての Principal でコードは実行されます。この Policy およびこの Policy に付与された Permission は、Subject.doAs の呼び出し後に有効になります。
1 つの grant エントリ内に、複数の Principal を記述できます。grant エントリ内に指定されたすべての Principal が Subject.doAs に渡される Subject に関連付けられている場合のみ、指定された Permissions がその Subject に付与されます。
grant Principal com.sun.security.auth.SolarisPrincipal "duke",
Principal com.sun.security.auth.SolarisNumericUserPrincipal "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 実装は、(Java セキュリティプロパティファイルの) auth.policy.provider セキュリティプロパティに、希望する Policy 実装クラスの完全指定名を設定することにより変更できます。Java セキュリティプロパティファイルは、<JAVA_HOME>/lib/security/java.security という名前のファイルに格納されています。ここで、<JAVA_HOME> は JDK のインストール先ディレクトリを示します。
| コンストラクタの概要 | |
|---|---|
protected |
Policy()
推奨されていません。 唯一のコンストラクタです。 |
| メソッドの概要 | |
|---|---|
abstract PermissionCollection |
getPermissions(Subject subject,
CodeSource cs)
推奨されていません。 指定した CodeSource に関連付けられた Principal に付与された Permission を取得します。 |
static Policy |
getPolicy()
推奨されていません。 インストール済みの Policy オブジェクトを返します。 |
abstract void |
refresh()
推奨されていません。 Policy のリフレッシュおよび再ロードを実行します。 |
static void |
setPolicy(Policy policy)
推奨されていません。 システム全体の Policy オブジェクトを設定します。 |
| クラス java.lang.Object から継承されたメソッド |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| コンストラクタの詳細 |
|---|
protected Policy()
| メソッドの詳細 |
|---|
public static Policy getPolicy()
AuthPermission("getPolicy") アクセス権を使用して SecurityManager.checkPermission を呼び出し、呼び出し側に Policy オブジェクトを取得できるアクセス権があるかどうかを確認します。
null にならない
SecurityException - 現在のスレッドが Policy オブジェクトを取得するアクセス権を持たない場合setPolicy(javax.security.auth.Policy)public static void setPolicy(Policy policy)
AuthPermission("setPolicy") アクセス権を使用して SecurityManager.checkPermission を呼び出し、呼び出し側に Policy を設定するアクセス権があるかどうかを確認します。
policy - 新規システム Policy オブジェクト
SecurityException - 現在のスレッドが Policy を設定するアクセス権を持たない場合getPolicy()
public abstract PermissionCollection getPermissions(Subject subject,
CodeSource cs)
CodeSource に関連付けられた Principal に付与された Permission を取得します。
subject - Subject。Subject に関連付けられた Principal は、指定した CodeSource とともに、このメソッドが返す Permission を決定するために使われる。このパラメータは null も可 cs - CodeSource が指定したコード。CodeSource は、指定した Subject とともに、このメソッドが返す Permission を決定するために使われる。このパラメータは null も可
Subject およびコードに付与された Permission の Collectionpublic abstract void refresh()
このメソッドは、このオブジェクトに、現在のポリシーのリフレッシュや再ロードを行わせます。これは実装に依存します。たとえば Policy オブジェクトがファイルに格納されている場合、refresh を呼び出すと、ファイルがもう一度読み取られることになります。
SecurityException - 呼び出し側に、Policy をリフレッシュするアクセス権がない場合
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。