|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
java.lang.Objectjavax.security.auth.Policy
public PermissionCollection getPermissions
(java.security.ProtectionDomain pd)
ProtectionDomain 有一個建構子:
public ProtectionDomain
(CodeSource cs,
PermissionCollection permissions,
ClassLoader loader,
Principal[] principals)
這兩個 API 為調用者提供向 Policy 查詢基於 Principal 的 Permission 條目的方法。
@Deprecated public abstract class Policy
這是用於表示基於 Subject 授權的系統策略的抽象類別。此類別的子類別實作提供一種方式來指定一個基於 Subject 的存取控制 Policy。
可以通過以下方式查詢 Policy 物件,尋找授予作為 Principal 運行的程式碼的 Permission 集合:
policy = Policy.getPolicy();
PermissionCollection perms = policy.getPermissions(subject,
codeSource);
Policy 物件查詢本地策略,且返回適當的 Permissions 物件,該物件所具有的權限被授予與所提供的 subject 相關聯的 Principals,同時也授予由提供的 codeSource 指定的程式碼。
Policy 套件含下面的資訊。注意,此例子只表示預設的 Policy 實作的語法。此類別的子類別實作可以實作替代語法,也可以根據任何如檔案、資料庫或伺服器之類別的源獲取 Policy。
Policy 中的每一項表示為一個 grant 條目。每個 grant 條目指定程式碼基、程式碼簽章者和 Principals 三元組,以及授予該三元組的 Permissions。
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.com" 中的程式碼,由 "foo" 簽章,作為 SolarisPrincipal 運行且名稱為 duke,權限為 Permission。此 Permission 允許執行程式碼在目錄 "/home/duke" 下讀取和寫入檔案。
為了作為一個特定的 Principal“運行”,程式碼調用 Subject.doAs(subject, ...) 方法。調用該方法後,程式碼作為與指定的 Subject 相關聯的所有 Principals 運行。注意,只在調用 Subject.doAs 之後,此 Policy(以及在此 Policy 中授予的 Permission)才有效。
多個 Principals 可以列在一個 grant 條目中。在 grant 條目中的所有 Principals 必須與提供給 Subject.doAs 的 Subject 相關聯,以便授予該 Subject 指定的 Permissions。
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" 的Socket連接的權限。
注意,在此 Policy 中不允許非基於 Principal 的 grant 條目。因此,像下面這樣的 grant 條目:
grant CodeBase "foo.com", Signedby "foo" {
permission java.io.FilePermission "/tmp/scratch", "read, write";
};
是被拒絕的。這種權限必須列在 java.security.Policy 中。
可以通過把 "auth.policy.provider" 安全屬性(在 Java 安全屬性檔案中)的值設置為所需的 Policy 實作類別的完全限定名,從而改變預設的 Policy 實作。Java 安全屬性檔案位於名稱為 <JAVA_HOME>/lib/security/java.security 的檔案中。<JAVA_HOME> 是指 java.home 系統屬性的值並指定安裝 JRE 的目錄。
| 建構子摘要 | |
|---|---|
protected |
Policy()
已過時。 唯一的建構子。 |
| 方法摘要 | |
|---|---|
abstract PermissionCollection |
getPermissions(Subject subject,
CodeSource cs)
已過時。 獲取授予與指定的 CodeSource 關聯的 Principals 的 Permissions。 |
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 關聯的 Principals 的 Permissions。
subject - 與此 Subject(主題)所關聯的 Principal(主體)與提供的 CodeSource 共同確定此方法返回的 Permission。此參數可以為 null。 cs - 它的 CodeSource 所指定的程式碼,與提供的 CodeSource 一起使用,確定此方法返回的 Permissions。此參數可以為 null。
Subject 以及提供的 subject 和 cs 參數中指定的程式碼的 Permissions Collection。public abstract void refresh()
此方法使該物件刷新/重新載入其當前 Policy。這是依賴於實作的。例如,如果 Policy 物件存儲在檔案中,調用 refresh 將會引起重新讀取該檔案。
SecurityException - 如果調用者沒有刷新此 Policy 的權限。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。