Liberty リポジトリー[8.5.5.6 以降]

Liberty プロファイル・アプリケーション・クライアント・コンテナーでの JAAS プログラマチック・ログインの構成

JAAS プログラマチック・ログインを使用するように Liberty プロファイル・アプリケーション・クライアント・コンテナーを構成できます。

始める前に

アプリケーション・クライアント・コンテナーでユーザーを認証するさまざまな方法を検討し、 プログラマチック・ログインを使用するというオプションが環境に最適かどうかを判断してください。詳細については、『Liberty プロファイル・アプリケーション・クライアント・コンテナーでの認証』を参照してください。

このタスクについて

プログラマチック・ログインは、フォーム・ログインの一種であり、認証用のログイン・フォームをアプリケーションが提示することをサポートします。この方法では、アプリケーション開発者は、ユーザーのクレデンシャルを収集して、そのユーザーを認証する必要があります。この方法では、JAAS フレームワークを利用して、ユーザー資格情報を認証のためにサーバーに送信します。 JAAS フレームワークは、JAAS ログイン構成の指定とユーザー資格情報を収集するためのコールバック・ハンドラーの使用による、 ログイン・コンテキストの作成からなります。ログイン・コンテキストからサブジェクトが取得されると、 Liberty セキュリティー API を使用してそのサブジェクトをスレッドに設定でき、それがサーバーへのアウトバウンド・コールに使用されます。
JAAS ログイン構成は、 認証のためにどのログイン・モジュールがどのように使用されるのかを指定します。以下に、 クライアントで Liberty プロファイルによって提供される JAAS ログイン構成を示します。
  • WSLogin JAAS ログイン構成: Liberty プロファイル・アプリケーション・クライアント・コンテナー・アプリケーションがユーザー ID とパスワードに基づく認証を実行するために使用できる、 汎用 JAAS ログイン構成です。ただし、この構成は、クライアント・アプリケーション・モジュールのデプロイメント記述子に指定された CallbackHandler ハンドラーをサポートしません。
  • ClientContainer JAAS ログイン構成: この JAAS ログイン構成は、 クライアント・アプリケーション・モジュールのデプロイメント記述子に指定された CallbackHandler ハンドラーを (指定されていれば) 認識します。デプロイメント記述子にハンドラーが指定されていない場合、 プログラマチックに指定されたハンドラーが使用されます。

    JAAS ログイン構成によって指定されたログイン・モジュールは、 特定の認証テクノロジーを実装します。ログイン・モジュールは、 javax.security.auth.callback.CallbackHandler インターフェースを使用して、ユーザーから資格情報を収集できます。 Liberty プロファイルは、com.ibm.websphere.security.auth.callback.WSCallbackHandlerImpl という名前の、CallbackHandler インターフェースの非プロンプト実装を提供します。 この実装により、アプリケーション開発者は、ユーザーにプロンプトを出すことなく、資格情報をアプリケーション内で直接指定できます。CallbackHandler 実装を指定するには、次の 2 つの方法があります。

    • javax.security.auth.login.LoginContext コンストラクターの引数として、実装をプログラマチックに指定します。 以下に例を示します。
      LoginContext logincontext = new LoginContext("ClientContainer", new WSCallbackHandlerImpl(“user”, "password"));
    • クライアント・アプリケーション・モジュールのデプロイメント記述子 (application-client.xml) に実装名を指定します。 以下に例を示します。
      <callbackhandler>com.acme.callbackhandler.WSCallbackHandlerImpl/<callbackhandler>
注: WSLogin ログイン構成は、 デプロイメント記述子に CallbackHandler ハンドラーを指定するという 2 番目のオプションを認識しません。

手順

  1. appSecurityClient-1.0 フィーチャーを client.xml ファイルに追加します。
    <feature>appSecurityClient-1.0</feature>
  2. クライアント用の SSL を構成します。
    1. オプション: securityUtility コマンドを使用して、クライアント用の SSL 証明書を作成します。 以下に例を示します。
      securityUtility createSSLCertificate --client=myClient --password=liberty
    2. 推奨: securityUtility コマンドを使用して、xor エンコードされたパスワードを生成します。パスワード liberty をエンコードする場合の例を以下に示します。
      securityUtility encode liberty
    3. keyStore エレメントを client.xml ファイルに追加します。 以下の例では、デフォルト SSL 構成が使用されています。
      <keyStore id="defaultKeyStore" password=“{xor}MzY9Oi0rJg==“/> <!-- pwd:
      liberty -->
  3. アプリケーション・コードで、ClientContainer JAAS ログイン構成および WSCallbackHandlerImpl コールバック・ハンドラーを使用して、Subject を作成します。
    1. アプリケーションがアウトバウンド要求を行う前に、以下のコードを追加します。userNameuserPassword は、 ターゲット・サーバーのユーザー・レジストリー内に存在するユーザーの有効な資格情報に変更してください。
      CallbackHandler wscbh = new WSCallbackHandlerImpl(“userName”, “userPassword”);
      LoginContext ctx = null;
      try {
            ctx = new LoginContext(“ClientContainer”, wscbh);
      } catch (LoginException le) {
            le.printStackTrace();
      }
      try {
            ctx.login();
      } catch (LoginException le) {
            le.printStackTrace();
      }
      				Subject subject = ctx.getSubject();
  4. 前のステップで取得した Subject をスレッドに設定し、 その Subject を使用して EJB を検索します。WSSubject.doAs または doAsPrivilieged API を使用して、 このアクションを実行してください。com.ibm.websphere.security.auth.WSSubject.doAs または com.ibm.websphere.security.auth.WSSubject.doAsPrivileged コード・ブロック内の Subject は、 Java™ Platform, Enterprise Edition (J2EE) リソース許可検査のために使用されます。
    WSSubject.doAs(subject, new PrivilegedAction() {
        public Object run() {
               try {
                      //Perform EJB lookup and invocation
               } catch (Exception ex) {
                      ex.printStackTrace();
               }
               return null;
        }
    });

次のタスク

サーバーの場合と同様に、カスタム・ログイン・モジュールを使用することによって、追加の認証の決定を行うか、サブジェクトに情報を追加してクライアント・アプリケーション内でより細かい許可の決定を行うことができます。

トピックのタイプを示すアイコン タスク・トピック

インフォメーション・センターに関するご使用条件 | フィードバック


タイム・スタンプ・アイコン 最終更新: 2015 年 6 月 17日
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-libcore-mp&topic=twlp_config_jaas_prog_login
ファイル名: twlp_config_jaas_prog_login.html