在 Liberty 中針對出埠 SPNEGO 記號配置 Kerberos 受限委派

您可以配置 Liberty 伺服器,以針對出埠 SPNEGO 記號提供 Kerberos 受限委派支援。

開始之前

請確定您已配置 SPNEGO Web 鑑別。

只支援 IBM® JDK 1.8 及更新版本。

關於這項作業

稱為 S4U(Services for Users,使用者服務)的 Kerberos 第 5 版延伸即所謂的受限委派,由下列兩個組件組成:
S4U2self

容許 Liberty 伺服器代表使用者取得通往其本身的服務通行證。這可搭配 Liberty 支援的任何鑑別形式。S4U2self 是「Kerberos 通訊協定轉移」的延伸。

S4U2proxy

容許 Liberty 伺服器代表使用者取得通往授信服務的服務通行證。這些服務通行證是利用使用者通往 Liberty 服務的服務通行證取得。這些服務受限於「Kerberos 金鑰配送中心 (KDC)」管理者。S4U2proxy 是「Kerberos 受限委派」的延伸。

受限委派特性提供下列 API,為支援 SPNEGO 鑑別的後端服務(例如:.NET 伺服器和其他 Liberty 伺服器)建立出埠 SPNEGO 記號。
  • S4U2self API: com.ibm.websphere.security.s4u2proxy.SpnegoHelper.buildS4U2proxyAuthorizationUsingS4U2self()
  • S4U2proxy API: com.ibm.websphere.security.s4u2proxy.SpnegoHelper.buildS4U2proxyAuthorization()

下列步驟使用的範例系統設定,與在 Liberty 中配置 SPNEGO 鑑別中所用和 使用 SPNEGO Web 鑑別針對 HTTP 要求進行單一登入中所說明的相同。

程序

  1. 在 Microsoft 網域控制器 myAdMachine.example.com 中,更新您用來驗證送入 SPNEGO 記號的服務主體身分名稱 (SPN)。例如,依如下所示來更新 HTTP/myLibertyMachine.example.com SPN:
    1. 如果要使用 S4U2self,請執行下列步驟:
      1. 開啟對映至委派 SPN 的使用者帳戶。
      2. 開啟「屬性編輯器」標籤。
      3. 依如下所示修改 userAccountControl 內容:
        • 授信鑑別委派 (0x1000000, or the TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION enum) 必須是 true。
      4. 設定授信服務:
        • 以使用者帳戶開啟「委派」標籤。
        • 選取只信任這個使用者委派給指定的服務圓鈕。
        • 選取使用任何鑑別通訊協定圓鈕。
        • 按一下新增,以新增授信服務。
        • 按一下使用者或電腦
        • 輸入用於授信服務的 SPN。
        • 按一下檢查名稱,並驗證已找到適當的物件名稱。
        • 按一下確定
        • 選取指定的 SPN,並按一下確定
    2. 如果要使用 S4U2proxy,請執行下列步驟:
      1. 開啟對映至委派 SPN 的使用者帳戶。
      2. 開啟「屬性編輯器」標籤。
      3. 依如下所示修改 userAccountControl 內容:
        • 授信鑑別委派 (0x1000000, or the TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION enum) 必須是 true。
      4. 設定授信服務:
        • 以使用者帳戶開啟「委派」標籤。
        • 選取只信任這個使用者委派給指定的服務圓鈕。
        • 按一下新增,以新增授信服務。
        • 按一下使用者或電腦
        • 輸入用於授信服務的 SPN。
        • 按一下檢查名稱,並驗證已找到適當的物件名稱。
        • 按一下確定
        • 選取指定的 SPN,並按一下確定
  2. 在 Liberty 伺服器機器 (myLibertyMachine.example.com) 上,將 constrianedDelegation-1.0 新增至 featureManager 來啟用受限委派特性,然後在 server.xml 檔中配置 JAAS Kerberos 登入模組。
    <featureManager>
            <feature>spnego-1.0</feature>
            <feature>contrainedDelegation-1.0</feature>
            ...
    </featuremanager>
    <jaasLoginContextEntry id="com.ibm.security.jgss.krb5.accept" name="com.ibm.security.jgss.krb5.accept" loginModuleRef="useKeytab" />
    	 <jaasLoginModule id="useKeytab" className="com.ibm.security.auth.module.Krb5LoginModule" controlFlag="REQUIRED" libraryRef="jaasSharedLib">
                    <options 
                            credsType="both"
                            debug="true" 
                            useDefaultCcache="false"
                            tryFirstPass="true"
                            forwardable ="true"
                            principal="HTTP/myLibertyMachine.example.com"
                            useKeytab="${server.config.dir}/resources/security/kerberos/krb5.keytab">
                    </options>		 		 		 		  
            </jaasLoginModule>
    
    
    <library id="jaasSharedLib" apiTypeVisibility="spec, ibm-api, api">
          <fileset dir="${server.config.dir}/lib/global/" includes="*" />
    	</library>
    一旦啟用 constrainedDelegation-1.0 特性,下列配置是隱含的:
    <constrainedDelegation id="defaultConstrainedDelegation" s4U2selfEnabled="false" />
    如果要使用 S4U2self,需要在 server.xml 檔中提供下列配置:
    <constrainedDelegation s4U2selfEnabled = "true" id="defaultConstrainedDelegation"/>
    註: 當您使用 S4U2proxy API 時,不能改變 jaasLoginContextEntry 的 ID 和名稱 com.ibm.security.jgss.krb5.accept
    註: 依預設,會啟用 S4U2proxy,並停用 S4U2self。您可以修改 server.xml 檔中的 s4U2selfEnabled 屬性,來啟用或停用 S4U2self 延伸。

結果

現在,您的應用程式可準備呼叫受限委派特性所提供的 API。

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



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