在 Liberty 中配置 SAML Web 入埠傳播

您可以將 Liberty 伺服器配置成接受 HTTP 標頭中的 SAML 記號,來作為鑑別記號。此特性通常用於代表已鑑別使用者來使用 SAML 的 Proxy 或 RESTful 用戶端。

關於這項作業

您可以在 Liberty 中啟用 samlWeb-2.0 特性,並設定 inboundPropagation=required,外加其他的配置資訊,將 Liberty 伺服器配置成接受 HTTP 標頭中的 SAML 記號,來作為鑑別記號。入埠傳播的配置類似於 在 Liberty 中配置 SAML Web 瀏覽器 SSO

程序

  1. server.xml 檔中新增 samlWeb-2.0 Liberty 特性,作法是在 featureManager 元素內新增下列元素宣告。
    <feature>samlWeb-2.0</feature>
  2. 啟用 SAML 入埠傳播。Liberty 伺服器會提供預設 samlWebSso20 元素。
    <samlWebSso20 id="defaultSP">
    
    </samlWebSso20>
    您可以使用這個預設 samlWebSso20 元素,或建立新的 samlWebSso20 元素,透過新增 inboundPropagation=required,來啟用 SAML 入埠傳播。
    <samlWebSso20 id="defaultSP" inboundPropagation="required" >
    </samlWebSso20>
    註: 一旦配置和啟用了 SAML,所有未經鑑別的要求都會採用 SAML 鑑別。如果要配置能夠和無法使用 SAML 鑑別的要求類型,您必須根據這個主題的說明,來配置鑑別過濾器。
  3. 您必須配置 PKIX 信任引擎,以透過 PKIX 驗證,來驗證簽章中之憑證的可信度。通過這項驗證的憑證會假設是授信的。
    1. 配置 <PKIXTrustEngine>,並將所有授信 SAML 簽章者憑證匯入至 Liberty 伺服器的預設信任儲存庫,或匯入至 PKIXTrustEnginetrustAnchor
    2. 選用:如果憑證可信度不足,您可以配置 trustedIssuers,以便在 SAML 記號出現在 SAML 主張中時,列出該 SAML 記號的簽發者名稱。
    以下是配置範例:
    <samlWebSso20 id="defaultSP"
      inboundPropagation="required"
      headerName="saml_token"
      signatureMethodAlgorithm="SHA1">
      <pkixTrustEngine trustAnchor="serverStore" />
    </samlWebSso20>  
  4. 選用:您可以新增 headerName,來定義含有 SAML 記號的 http 要求標頭名稱。如果未定義這個配置屬性,Liberty 伺服器會搜尋標頭名稱 samlSamlSAML,以找出 SAML 記號。HTTP 要求中的 SAML 記號標頭可以是下列其中一種格式:
    Authorization=[<headerName>=<SAML_HERE>]                  
    Authorization=[<headerName>="<SAML_HERE>"] 
    Authorization=[<headerName> <SAML_HERE>]
    <headerName>=[<SAML_HERE>]

    SAML 記號必須以 Base-64UTF-8 編碼,並且可以用 GZIP 格式來壓縮。

    註: SAML 記號標頭名稱必須是一個安全的 URL 字串,且頭尾不得含有空格。
  5. 選用:您可以配置如何從 SAML 建立受鑑別的主體。依預設,Liberty 服務提供者會直接從 SAML 主張建立主體,而不需使用本端使用者登錄,這等同於 mapToUserRegistry=No 配置。其他的配置選項是 mapToUserRegistry=UsermapToUserRegistry=Group
    • mapToUserRegistry=No:SAML 簽發者名稱是 realm,並使用 NameID,在主體中建立主體名稱和唯一安全名稱,且不包含群組成員。您可以配置 userIdentifier, realmIdentifiergroupIdentifieruserUniqueIdentifier 等屬性,以便使用自訂的使用者名稱、網域範圍名稱、群組成員資格和唯一的安全 ID,來建立受鑑別的主體。
    • mapToUserRegistry=User:如果您想根據您的本端使用者登錄,來驗證 SAML 使用者,並根據本端使用者登錄來建立使用者主體,請選擇這個選項。
    • mapToUserRegistry=Group:如果您想根據您的本端使用者登錄,來驗證 SAML 群組,並建立主體來包含那些已驗證的群組,請選擇這個選項。這個選項類似於 mapToUserRegistry=No,只不過會根據本端使用者登錄來驗證群組成員資格。
  6. 選用:您可以採使用者特性形式來實作 Liberty SAML SPI com.ibm.wsspi.security.saml2.UserCredentialResolver,以便將 SAML 主張動態對映至 Liberty 主體。
  7. 選用:您可以配置多個 samlWebSso20 元素,且每一個 samlWebSso20 元素各參照一個唯一的 authFilter 元素。所有 authFilter 元素必須彼此排除。在配置多個 samlWebSso20 元素之後,每一個元素就各有自己的鑑別原則和耗用規則。
  8. 選用:配置簽章需求,注意事項如下:

    預設簽章演算法是 SHA256。如果您必須變更演算法,請使用 signatureMethodAlgorithm 屬性來修改它。

  9. 選用:您可以配置 SP 鑑別階段作業和 Cookie。在驗證和處理 SAML 主張之後,Liberty SAML SP 會維護用戶端和 SP 之間的受鑑別階段作業,而不使用 LTPA Cookie。受鑑別的階段作業逾時值會設為 <saml:AuthnStatement> 中的 SessionNotOnOrAfter(若有的話),或設為 server.xml 檔中所配置的 sessionNotOnOrAfter (其預設值為 120 分鐘)。會自動產生階段作業 Cookie 名稱,您可以使用 spCookieName 屬性來指定想要的名稱,以自訂 Cookie 名稱。

    如果您希望 Liberty SP 從 SAML 主張建立 LTPA Cookie,並在後續的鑑別要求中使用 LTPA Cookie,可新增 disableLtpaCookie=false 配置。如果您想提供 LTPA Cookie 給其他伺服器共用,必須新增配置屬性 allowCustomCacheKey="false"

    註: 如果您配置 disableLtpaCookie="false"allowCustomCacheKey="false",請確定 SAML 使用者名稱不會直接接受本端使用者登錄的鑑別,因為本端使用者登錄不讓使用者有兩個帳戶。
  10. 配置鑑別過濾器。您可以使用 authnFilter,來定義由哪個 samlWebSso20 元素處理入埠傳播鑑別要求。

    如需配置鑑別過濾器的相關資訊,請參閱鑑別過濾器

結果

現在您已建立必要的配置,來將 Liberty 伺服器配置成鑑別含有 SAML 記號的 HTTP 要求。

指示主題類型的圖示 作業主題



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