信頼性検証により ID アサーションを使用可能化することで、アプリケーションは、JAAS ログイン構成を使用し、プログラマチックな ID アサーションを実行することができます。
このタスクについて
信頼性検証で ID アサーションを使用可能にするには、
以下のステップを実行します。
プロシージャー
- カスタム・ログイン・モジュールを作成し、信頼性検証を実施します。
ログイン・モジュールは、共用状態で信頼性および ID 情報を設定する必要があり、IdentityAssertionLoginModule に渡されます。
信頼性および ID 情報は、鍵 com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.state の下で共用状態でマップに保管されます。この鍵が共用状態にない場合は、WSLoginFailedException エラーが IdentityAssertionLoginModule モジュールによってスローされます。
カスタム・ログイン・モジュールは、以下のものを含む必要があります。
- com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.trust というトラスト鍵。
トラスト鍵が true に設定されていると、信頼性が確立されます。トラスト鍵が false に設定されると、
IdentityAssertionLoginModule モジュールが WSLoginFailedException エラーを作成します。
- com.ibm.wsspi.security.common.auth.module.IdenityAssertionLoginModule.principal 鍵に設定される java.security.Principal タイプの ID。
- com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.certificates 鍵に設定される java,security.cert.X509Certificate[] 証明書の形式の ID。
注: プリンシパルと証明書の両方が提供されている場合、プリンシパルが使用され、警告が発生します。
- アプリケーション・ログインに新規 Java Authentication and Authorization
Service (JAAS) 構成を作成します。 ユーザーがインプリメントした信頼性検証カスタム・ログイン・モジュールおよび
IdentityAssertionLoginModule モジュールを含みます。
管理コンソールからアプリケーション・ログイン構成を構成するには、以下のステップを完了します。
- 「セキュリティー」>「管理、アプリケーション、およびインフラストラクチャーの保護」をクリックします。
- 「Java Authentication and Authorization
Service」の下で「アプリケーション・ログイン」>「新規」とクリックします。
- JAAS 構成にエイリアスを与え、「適用」をクリックします。
- 「追加プロパティー」の下の、「JAAS ログイン・モジュール」>「新規」をクリックします。
- ユーザーがインプリメントした信頼性検証カスタム・ログイン・モジュールのモジュール・クラス名を入力し、
「適用」をクリックします。
- com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule モジュール・クラス名を入力します。
- モジュール・クラス名のクラスが正しい順序になっているかを確認します。
ユーザーがインプリメントした信頼性検証ログイン・モジュールは、リストの最初のクラスで、
IdentityAssertionLoginModule モジュールは 2 番目のクラスでなければなりません。
- 「保管」をクリックします。新規 JAAS 構成は ID アサーションを実行するために
アプリケーションによって使用されます。
次の作業
これで、アプリケーションは JAAS ログイン構成を使用してプログラマチックな ID アサーションを
実行することができます。アプリケーションはステップ 2 で作成された JAAS 構成にログイン・コンテキストを作成し、表明する ID でそのログイン・コンテキストにログインすることができます。
正常にログインできると、その ID は次の例のように、現在実行中のプロセスで設定されます。
MyCallbackHandler handler = new MyCallbackHandler(new MyPrincipal(“Joe”));
LoginContext lc = new LoginContext(“MyAppLoginConfig”, handler);
lc.login(); //assume successful
Subject s = lc.getSubject();
WSSubject.setRunAsSubject(s);
// From here on , the runas identity is “Joe”