在 Liberty 中配置應用程式授權
配置應用程式的授權是指確認使用者或群組是否屬於指定的角色,以及這個角色是否具備存取資源的專用權。
關於這項作業
Liberty 伺服器會從使用者登錄中擷取使用者和群組對映資訊,然後檢查應用程式的授權配置,來判斷使用者或群組是否已指派給必要的角色之一。之後,伺服器會讀取應用程式的部署描述子來判斷使用者或群組是否有存取資源的專用權。
程序
- 在 server.xml 檔中啟用 appSecurity-2.0
Liberty 特性。 例如:
<featureManager> <feature>appSecurity-2.0</feature> </featureManager>
- 在 Liberty 伺服器上配置使用者登錄以進行鑑別。
請參閱 在 Liberty 中鑑別使用者。
- 確定您的應用程式部署描述子包含安全限制及其他安全相關資訊。 註: 您也可以利用 Rational® Application Developer 之類的工具來建立部署描述子。
- 配置授權資訊,例如,使用者和群組至角色的對映。 您可以利用下列方式來配置權限表:
- 如果您有 EAR 檔,您可以新增授權配置定義到 ibm-application-bnd.xml 或 ibm-application-bnd.xmi 檔中。
- 如果您有獨立式 WAR 檔,您可以在 server.xml 檔中,新增權限表定義到各自的應用程式元素之下。 您可以利用 WebSphere® Application Server Developer Tools for Eclipse 來執行這個動作。
附註:- 如果您有 EAR 檔,授權配置可能已存在。 在寫入現行規格的 EAR 檔中,這個資訊儲存在 ibm-application-bnd.xml 檔中;在舊的 EAR 檔中,這個資訊儲存在 ibm-application-bnd.xmi 檔中。
- 如果您的 EAR 檔還沒有包含 ibm-application-bnd.xm* 檔,建立這個檔案不是一項簡易的作業,您可能偏好新增授權配置到 server.xml 檔中。
- 如果 EAR 檔的授權配置已定義在 ibm-application-bnd.xm* 中,在 server.xml 檔中也有這項配置,兩份表格會合併起來。 如果有任何衝突,會使用 server.xml 檔中的資訊。
- 如果您修改您的使用者登錄,請務必檢閱權限表中必要的變更。 比方說,如果您指定 access-id 元素,且變更登錄的網域範圍名稱,您也必須在 access-id 元素中變更網域範圍名稱。
- 如果您在 server.xml 檔中指定了 application-bnd 元素,您的應用程式不能放在 dropins 資料夾中。
如果您將它保留在 dropins 資料夾中,您必須在 server.xml 檔中設定如下,將應用程式監視停用:
<applicationMonitor dropinsEnabled="false" />
角色可以對映至使用者、群組或特殊主體。 特殊主體有兩個類型:EVERYONE 和 ALL_AUTHENTICATED_USERS。 當角色對映至 EVERYONE 特殊主體時,不具備任何安全性,因為每個人都可以存取,系統不會提示您輸入認證。 當角色對映至 EVERYONE_AUTHENTICATED_USERS 特殊主體時,應用程式伺服器所鑑別的任何使用者都可以存取受保護的資源。
以下是在 server.xml 檔中配置使用者和群組至角色之對映的程式碼範例:<application type="war" id="myapp" name="myapp" location="${server.config.dir}/apps/myapp.war"> <application-bnd> <security-role name="user"> <group name="students" /> </security-role> <security-role name="admin"> <user name="gjones" /> <group name="administrators" /> </security-role> <security-role name="AllAuthenticated"> <special-subject type="ALL_AUTHENTICATED_USERS" /> </security-role> </application-bnd> </application>
在這個範例中,admin 角色對映至使用者 ID gjones 以及 administrators 群組中的所有使用者。 AllAuthenticatedRole 對映至特殊主體 ALL_AUTHENTICATED_USERS,換言之,只要提供了有效的鑑別認證,任何使用者都有存取權。
- 選用:在沒有應用程式連結資訊時,配置一項授權決策。 如果沒有提供受保護應用程式的角色對映連結資訊,預設授權引擎會採用保護資源的角色名稱,作為該角色相關聯的群組名稱。因此,比方說,如果角色名稱是 manager,則屬於 manager 群組的使用者具備該資源的存取權。只有在 server.xml 或應用程式連結檔中沒有為該應用程式指定任何應用程式連結資訊時,才會這樣做:例如,如果新增下列連結,會停用安全角色至群組的連結:
<application type="war" id="myapp" name="myapp" location="${server.config.dir}/apps/myapp.war"> <application-bnd> <security-role name="anyAppRoleName"/> </application-bnd> </application>
註: 為了成功授權給使用者登錄中的群組名稱,角色名稱必須符合登錄中所配置的群組完整或唯一名稱,而不是簡稱。比方說,如果群組的簡稱是 swGroup,但是使用者登錄中的完整或唯一名稱是 CN=swGroup,o=company,c=us,您必須指定 CN=swGroup,o=company,c=us 作為角色名稱,這樣授權才會成功。

檔名:twlp_sec_rolebased.html