Liberty:授權
Liberty 中的授權決定了使用者是否有權在系統內存取特定角色。
授權指定資源的存取權。它通常是在確認身分的鑑別之後。 鑑別回答下列問題:「您是您所宣稱的人嗎?」 ;授權回答下列問題:「您有權執行您正嘗試執行的動作嗎?」。
管理功能授權
當一個實體試圖存取資源時,授權服務會判斷這個實體是否有存取資源所需要的權限。 不論實體要存取應用程式或執行管理功能,這個概念都有效。 授權存取應用程式和存取管理功能,兩者的主要區別是如何將使用者對映至角色。 如果是應用程式授權,請利用 server.xml 檔中的 application-bnd 元素或 ibm-application-bnd.xml/xmi 檔,將使用者對映至角色。 如果是管理功能授權,請利用 server.xml 檔中的 administrator-role 元素,將使用者對映至管理者角色。 如需管理安全的相關資訊,請參閱利用 JMX 連接至 Liberty。
應用程式授權
下圖說明應用程式授權的運作方式:

- 當實體嘗試存取 Liberty 所處理之應用程式中的資源時,會進行授權。Web 儲存器會呼叫授權服務,以便判斷在給定一組一或多個必要的角色之下,使用者是否有權存取特定資源。 必要的角色取決於部署描述子及 @ServletSecurity 註釋中的 auth-constraint 元素。
- 授權服務決定了必要的角色是對映到哪些物件。 這個步驟是透過處理 ibm-application-bnd.xmi 檔或 ibm-application-bnd.xml 檔中所定義的對映,以及 server.xml 檔的 application-bnd 元素來完成。 這兩個來源的對映會合併起來。 如果兩個來源有相同的角色,只會使用 server.xml 檔中的角色對映。 利用 server.xml 檔將角色對映至使用者的優點,是您的應用程式不需要包裝在 EAR 檔中,更新會更加容易。 另外,您也可以利用 ibm-application-bnd.xmi/xml 檔,使您的應用程式具備可攜性,能夠移往其他伺服器及其他不支援 server.xml 檔的WebSphere® Application Server traditional伺服器。
- 如果將必要的角色對映至 EVERYONE 特殊主體,授權服務會立即傳回並容許任何人來進行存取。 如果將角色對映至 ALL_AUTHENTICATED_USERS 特殊主題,且使用者已通過鑑別,授權服務會授與使用者存取權。 如果這些條件都不符合,授權服務會判斷有哪些使用者和群組對映至必要的角色。 如果使用者對映至必要的角色,或使用者屬於對映至角色的群組,授權服務會授與資源的存取權。
- 授權服務會將結果傳回給 Web 儲存器,以指出要授與或拒絕使用者的存取權。
特殊主體
當您將實體對映至角色時,您可以對映特殊主體,而不是特定使用者或群組。 特殊主體是主體概念的延伸。 特殊主體可以代表在特定種類之下的使用者群組。
- EVERYONE:代表系統上的任何實體,這表示不提供任何的安全保護,因為每個人都可以存取,系統不會提示您輸入認證。
- ALL_AUTHENTICATED_USERS:代表已順利通過伺服器鑑別的任何實體。
<application-bnd>
<security-role name="AllAuthenticated">
<special-subject type="ALL_AUTHENTICATED_USERS" />
</security-role>
</application-bnd>
存取 ID 和授權
在您授權給使用者或群組時,伺服器需要一種能夠唯一識別這個使用者或群組的方法。 使用者和群組的唯一 ID 就是為了這個目的,它們用來建置授權配置。 這些 ID 取決於使用者登錄實作:唯一使用者 ID 是 getUniqueUserId() 的值,唯一群組 ID 是 getUniqueGroupId() 的值。 您也可以選擇在授權配置中明確指定使用者或群組的存取 ID。 這些明確的存取 ID 用來取代使用者登錄實作所傳回的值。如果要在 ibm-application-bnd.xml/xmi 檔或 server.xml 檔(其中 application-bnd 位於 application 元素之下)中指定存取 ID,請使用 user 或 group 元素的 access-id 屬性。
<application-bnd>
<security-role name="Employee">
<user name="Bob" access-id="user:MyRealm/Bob"/>
<group name="developers" access-id="group:myRealm/developers"/>
</security-role>
</application-bnd>
OAuth
OAuth 是開放式的委派授權標準。 利用 OAuth 授權架構,使用者可以授權協力廠商應用程式,在未共用其存取權或其資料的完整範圍的情況下,存取其由另一個 HTTP 服務來儲存的資訊。如需如何在 Liberty 中使用 OAuth 進行授權的相關資訊,請參閱 OAuth 說明文件。
未提供角色對映連結時的應用程式授權
<application type="war" id="myapp" name="myapp" location="${server.config.dir}/apps/myapp.war">
<application-bnd>
<security-role name="anyAppRoleName"/>
</application-bnd>
</application>