您可以利用「Java™ 鑑別和授權服務 (JAAS)」登入架構來建立一項 JAAS 登入配置,以便用來執行 Liberty 的身分主張登入。
關於這項作業
透過配置含有信任驗證的身分主張,應用程式可以利用 JAAS 登入配置來執行程式化的身分主張。
請參閱 IdentityAssertionLoginModule,以取得詳細資料。
程序
- 將信任驗證委派給使用者實作的外掛點。
信任驗證由自訂登入模組來完成。
這個自訂登入模組會執行任何必要的信任驗證,然後設定共用狀態的信任和識別資訊,以便傳遞給身分主張登入模組。
在下列共用狀態金鑰中,需要一項對映:
com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.state
如果遺漏狀態,
IdentityAssertionLoginModule 類別會報告一則
WSLoginFailedException 問題。
共用狀態金鑰中的對映必須包括含有下列金鑰名稱的信任金鑰:
com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.trust
如果這個金鑰設為
true,就會建立信任關係。
如果金鑰設為
false,就不會建立信任關係,
IdentityAssertionLoginModule 類別會建立一則
WSLoginFailedException 問題。
共用狀態金鑰中的對映也必須設定下列其中一項資源:
如果同時提供了主體和憑證,則會使用主體,並提出一項警告報告。
- 建立應用程式登入所用的 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 配置來執行身分主張。
- 執行可程式化的身分主張。 現在,程式可以利用 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 登入配置。