Liberty:授權

Liberty 中的授權決定了使用者是否有權在系統內存取特定角色。

授權指定資源的存取權。它通常是在確認身分的鑑別之後。 鑑別回答下列問題:「您是您所宣稱的人嗎?」 ;授權回答下列問題:「您有權執行您正嘗試執行的動作嗎?」。

管理功能授權

當一個實體試圖存取資源時,授權服務會判斷這個實體是否有存取資源所需要的權限。 不論實體要存取應用程式或執行管理功能,這個概念都有效。 授權存取應用程式和存取管理功能,兩者的主要區別是如何將使用者對映至角色。 如果是應用程式授權,請利用 server.xml 檔中的 application-bnd 元素或 ibm-application-bnd.xml/xmi 檔,將使用者對映至角色。 如果是管理功能授權,請利用 server.xml 檔中的 administrator-role 元素,將使用者對映至管理者角色。 如需管理安全的相關資訊,請參閱利用 JMX 連接至 Liberty

應用程式授權

下圖說明應用程式授權的運作方式:

圖 1. 授權程序概觀授權服務會檢查應用程式和伺服器之配置檔中角色至使用者的對映,然後授與或拒絕存取要求。
  1. 當實體嘗試存取 Liberty 所處理之應用程式中的資源時,會進行授權。Web 儲存器會呼叫授權服務,以便判斷在給定一組一或多個必要的角色之下,使用者是否有權存取特定資源。 必要的角色取決於部署描述子及 @ServletSecurity 註釋中的 auth-constraint 元素。
  2. 授權服務決定了必要的角色是對映到哪些物件。 這個步驟是透過處理 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伺服器。
  3. 如果將必要的角色對映至 EVERYONE 特殊主體,授權服務會立即傳回並容許任何人來進行存取。 如果將角色對映至 ALL_AUTHENTICATED_USERS 特殊主題,且使用者已通過鑑別,授權服務會授與使用者存取權。 如果這些條件都不符合,授權服務會判斷有哪些使用者和群組對映至必要的角色。 如果使用者對映至必要的角色,或使用者屬於對映至角色的群組,授權服務會授與資源的存取權。
  4. 授權服務會將結果傳回給 Web 儲存器,以指出要授與或拒絕使用者的存取權。

特殊主體

當您將實體對映至角色時,您可以對映特殊主體,而不是特定使用者或群組。 特殊主體是主體概念的延伸。 特殊主體可以代表在特定種類之下的使用者群組。

以下是兩個可用的特殊主體類型:
  • EVERYONE:代表系統上的任何實體,這表示不提供任何的安全保護,因為每個人都可以存取,系統不會提示您輸入認證。
  • ALL_AUTHENTICATED_USERS:代表已順利通過伺服器鑑別的任何實體。
如果要將特殊主體對映至使用者,請更新 ibm-application-bnd.xmi/xml 檔或 server.xml 檔,其中,application-bnd 位於 application 元素之下。在本例中,名稱為 AllAuthenticated 的角色會對映至特殊主體 ALL_AUTHENTICATED_USERS
    <application-bnd>
           <security-role name="AllAuthenticated">
               <special-subject type="ALL_AUTHENTICATED_USERS" />
           </security-role>
       </application-bnd>

請參閱在 Liberty 中配置應用程式授權

存取 ID 和授權

在您授權給使用者或群組時,伺服器需要一種能夠唯一識別這個使用者或群組的方法。 使用者和群組的唯一 ID 就是為了這個目的,它們用來建置授權配置。 這些 ID 取決於使用者登錄實作:唯一使用者 ID 是 getUniqueUserId() 的值,唯一群組 ID 是 getUniqueGroupId() 的值。 您也可以選擇在授權配置中明確指定使用者或群組的存取 ID。 這些明確的存取 ID 用來取代使用者登錄實作所傳回的值。如果要在 ibm-application-bnd.xml/xmi 檔或 server.xml 檔(其中 application-bnd 位於 application 元素之下)中指定存取 ID,請使用 usergroup 元素的 access-id 屬性。

在這個範例中,指定了使用者 Bob 和群組 developers 的存取 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>
註: access-id 屬性用來進行授權檢查。如果沒有指定,則會從利用使用者或群組名稱所配置的登錄來判斷。不過,當使用者或群組不屬於作用中登錄時,您必須如下列範例所示指定 access-id 屬性。舉例來說,當您使用程式化登入時,就必須指定。

OAuth

OAuth 是開放式的委派授權標準。 利用 OAuth 授權架構,使用者可以授權協力廠商應用程式,在未共用其存取權或其資料的完整範圍的情況下,存取其由另一個 HTTP 服務來儲存的資訊。如需如何在 Liberty 中使用 OAuth 進行授權的相關資訊,請參閱 OAuth 說明文件。

未提供角色對映連結時的應用程式授權

如果沒有提供受保護應用程式的角色對映連結資訊,預設授權引擎會採用保護資源的角色名稱,作為該角色相關聯的群組名稱。因此,比方說,如果角色名稱是管理員,則屬於管理員群組的使用者具備該資源的存取權。只有在 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 作為角色名稱,這樣授權才會成功。

指示主題類型的圖示 概念主題



「時間戳記」圖示 前次更新: 2016 年 11 月 30 日
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwlp_authorization
檔名:cwlp_authorization.html