|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object javax.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。