利用 JAAS 自訂應用程式登入來執行身分主張

您可以利用「Java™ 鑑別和授權服務 (JAAS)」登入架構來建立一項 JAAS 登入配置,以便用來執行 Liberty 的身分主張登入。

關於這項作業

透過配置含有信任驗證的身分主張,應用程式可以利用 JAAS 登入配置來執行程式化的身分主張。 請參閱 IdentityAssertionLoginModule,以取得詳細資料。

適用於分散式平台避免問題: 在 Liberty 上配置應用程式安全時,WASdev.net 網站上有一些安全配置範例可供參考。 請參閱在 Liberty 上利用開發人員工具來配置 JAAS

程序

  1. 將信任驗證委派給使用者實作的外掛點。
    信任驗證由自訂登入模組來完成。 這個自訂登入模組會執行任何必要的信任驗證,然後設定共用狀態的信任和識別資訊,以便傳遞給身分主張登入模組。 在下列共用狀態金鑰中,需要一項對映:
    com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.state
    如果遺漏狀態,IdentityAssertionLoginModule 類別會報告一則 WSLoginFailedException 問題。
    共用狀態金鑰中的對映必須包括含有下列金鑰名稱的信任金鑰:
    com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.trust
    如果這個金鑰設為 true,就會建立信任關係。 如果金鑰設為 false,就不會建立信任關係,IdentityAssertionLoginModule 類別會建立一則 WSLoginFailedException 問題。

    共用狀態金鑰中的對映也必須設定下列其中一項資源:

    • 身分金鑰。 java.security.Principal 可以設在下列金鑰中:
      com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.principal
    • java.security.cert.X509Certificate[]。 這個憑證可以設在下列金鑰中:
       com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.certficates
    如果同時提供了主體和憑證,則會使用主體,並提出一項警告報告。
  2. 建立應用程式登入所用的 JAAS 配置。 JAAS 配置會包含使用者實作的信任驗證自訂登入模組,以及 IdentityAssertionLoginModule 類別。 之後,如果要配置應用程式登入配置,請在 server.xml 檔中新增下列程式碼:
    <jaasLoginContextEntry id="CustomIdentityAssertion" name="CustomIdentityAssertion"
                           loginModuleRef="customIdentityAssertion,identityAssertion" />
    <jaasLoginModule id="customIdentityAssertion"
                     className="com.ibm.ws.security.authentication.IdentityAssertionLoginModule"
                     controlFlag="REQUIRED" libraryRef="customLoginLib"/>
    	<library id="customLoginLib">
        <fileset dir="${server.config.dir}" includes="IdentityAssertionLoginModule.jar"/>
    	</library>
    應用程式會利用這個 JAAS 配置來執行身分主張。
  3. 執行可程式化的身分主張。 現在,程式可以利用 JAAS 登入配置來執行程式化的身分主張。 應用程式可以建立第 2 步驟所建立之 JAAS 配置的登入環境定義,然後利用將主張的身分來登入這個登入環境定義。 如果登入成功,可以在目前正在執行的程序中設定這個身分。 下列範例說明這個程序:
    NameCallback handler = new NameCallback(new MyPrincipal("Joe"));
    LoginContext lc = new LoginContext("customIdentityAssertion", handler);
    lc.login();  //假設成功
    Subject s = lc.getSubject();
    WSSubject.setRunAsSubject(s);
    // 從這裡開始,執行身分是 "Joe"
    註: 在這個範例中,MyPrincipal 類別是 java.security.Principal 介面的實作。

結果

當使用 JAAS 登入架構和兩個使用者實作的登入模組時,您可以建立可供登入一項身分主張的 JAAS 登入配置。

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



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