WebSphere Application Server for z/OS, Version 6.0.x   
             オペレーティング・システム: z/OS

             目次と検索結果のパーソナライズ化

Web 認証用の Java Authentication and Authorization Service プログラミング・モデ ルの使用

WebSphere Application Server では、Java 2 Platform, Enterprise Edition (J2EE) 宣言セキュリティー・モデルをサポートしています。 J2EE デプロイメント記述子を使用して、認証およびアクセス制御ポリシーを定義できます。 カスタム・ログイン・モジュールをさらに積み重ね、 WebSphere Application Server 認証メカニズムをカスタマイズできます。

始める前に

カスタム・ログイン・モジュールにより、プリンシパルおよびクレデンシャル・マッピング、 カスタム・セキュリティー・トークン処理およびカスタム・クレデンシャル処理、およびその他の可能性でのエラー処理を実行できます。 通常は、認証機能の実行のためにアプリケーション・コードを使用する必要はありません。 アプリケーション・コードで認証機能を実行する必要がある場合は、このセクションで説明されている プログラミング手法を使用してください。例えば、SSOAuthenticator ヘルパー関数をプログラムしたアプリケーションがある場合、以下のプログラミング・インターフェースを使用できます。 SSOAuthenticator ヘルパー関数は、WebSphere Application Server バージョン 4.0 以降では推奨されていません。 通常は、宣言セキュリティーを使用し、 最後の手段として、このセクションで説明する手法を使用してください。

このタスクについて

Lightweight Third-Party Authentication (LTPA) メカニズムのシングル・サインオン (SSO) オプションが使用可能な場合、 Web クライアント・ログイン・セッションは、ログインの成功後、LTPA SSO トークン Cookie によりトラッキングされます。 ログアウト時には、このトークンは削除されてログイン・セッションは終了しますが、 サーバー・サイドのサブジェクトは削除されません。 宣言セキュリティー・モデルを使用する場合、WebSphere Application Server の Web コンテナーにより、クライアント認証およびログイン・セッション管理が自動的に実行されます。 J2EE セキュリティー制約なしでログイン・ページを設定し、最初にそのログイン・ページにクライアント要求を送信することにより、アプリケーション・コードで認証を実行できます。 ログイン・ページは、Java Authentication and Authorization Service (JAAS) プログラミング・モデルを使用して、認証を実行することができます。 WebSphere Application Server Web ログイン・モジュールを使用可能に設定し、SSO Cookie を生成するには、 以下のステップを実行します。

プロシージャー

  1. 「グローバル・セキュリティー」パネルで、新規のシステム・ログイン JAAS 構成を作成します。
  2. WEB_INBOUND ログイン構成を手動で複製し、それに新しい別名を付けます。 ログイン構成を複製するには、「新規」をクリックして、構成の名前を入力し、「適用」をクリックして、「追加プロパティー」の下の「JAAS login modules」をクリックします。「新規」をクリックして、JAAS ログイン・モジュールを構成します。詳しくは、Java Authentication and Authorization Service 用のログイン・モジュール設定 を参照してください。WebSphere Application Server Web コンテナーは、WEB_INBOUND ログイン構成を使用して、Web クライアントを認証します。 WEB_INBOUND ログイン構成を変更すると、セル内のすべての Web アプリケーションが影響を受けます。 WEB_INBOUND ログイン構成の内容を複製して、ユーザーの所有するログイン構成を作成する必要があります。
  3. [バージョン 6.0] [バージョン 6.0.1] ltpaLoginModule」ログイン・モジュールを選択して、「カスタム・プロパティー」をクリックします。ユーザーのログイン構成には、2 つのログイン・モジュール、ltpaLoginModule および wsMapDefaultInboundLoginModule が定義されています。
  4. [バージョン 6.0.2] wsMapDefaultInboundLoginModule」ログイン・モジュールを選択して、「カスタム・プロパティー」をクリックします。ユーザーのログイン構成には、2 つのログイン・モジュール、ltpaLoginModule および wsMapDefaultInboundLoginModule が定義されています。
  5. true の値を付けて、ログイン・プロパティー名 cookie を追加します。 2 つのログイン・モジュールが LTPA SSO Cookie の生成に使用可能になります。 オリジナルの WEB_INBOUND ログイン構成には、Cookie ログイン・オプションを追加しないでください。 ltpaLoginModule で定義された Cookie オプションは、ユーザーのログイン構成の両方のログイン・モジュールに適用されます。
  6. オプション: オプションで、カスタムの LoginModule (1 つまたは複数) の順序を新しいログイン構成に設定します。
  7. 新規に定義したログイン構成を使用して、JAAS LoginContext.login を実行することにより、プログラマチック・ログインにログイン・ページを使用します。 ログインの成功後、ltpaLoginModule または wsMapDefaultInboundLoginModule のいずれかにより、認証の成功時に LTPA SSO Cookie が生成されます。 実際にどちらの LoginModule により SSO Cookie が生成されるかは、システム認証構成やランタイムの状態 (このセクションの説明の範囲外) などの、多くの要因に左右されます。
  8. 変更された WSSubject.setRunAsSubject メソッドを呼び出し、認証キャッシュにサブジェクトを追加します。 そのサブジェクトは、LoginModule により作成された、WebSphere Application Server JAAS サブジェクトである必要があります。 認証キャッシュへサブジェクトを追加することにより、SSO トークンからのサブジェクトが再作成されます。
  9. WSSecurityHelper クラスから revokeSSOCookies メソッドを起動することにより、プログラマチック・ログアウト・ページを使用して SSO Cookies を取り消します。Cookie という用語が使用されているのは、WebSphere Application Server リリース 5.1.1 (およびそれ以降) のリリースが、異なる暗号化アルゴリズムを持つ新しい LTPA SSO トークンをサポートしているが、後方互換性のためオリジナルの LTPA SSO トークンを生成するよう構成できるためです。 そのサブジェクトが認証キャッシュにまだあり、SSO Cookie のみが取り消されることに注意してください。

認証を実行するには、以下のコード例を使用してください。
Suppose you wrote a LoginServlet.java:

	Import com.ibm.wsspi.security.auth.callback.WSCallbackHandlerFactory;
	Import com.ibm.websphere.security.auth.WSSubject;

	public Object login(HttpServletRequest req, HttpServletResponse res) 
	throws ServletException {

	PrintWriter out = null;
	try {
out = res.getWriter();
      res.setContentType("text/html");
	} catch (java.io.IOException e){
		// Error handling
	}

	Subject subject = null;
	try {
	LoginContext lc = new LoginContext("system.Your_login_configuration",
WSCallbackHandlerFactory.getInstance().getCallbackHandler(
userid, null, password, req, res, null));
lc.login();
		subject = lc.getSubject();
      WSSubject.setRunAsSubject(subject);
} catch(Exception e) {
		// catch all possible exceptions if you want or handle them separately
		out.println("Exception in LoginContext login + Exception = " +
 e.getMessage());
		throw new ServletException(e.getMessage());
	}

The following is sample code to revoke the SSO cookies upon a programming logout:


The LogoutServlet.java:

	public void logout(HttpServletRequest req, HttpServletResponse res,
 Object retCreds)  throws ServletException {
		 PrintWriter out =null;
	 try {
out = res.getWriter();
        res.setContentType("text/html");
		 } catch (java.io.IOException e){
			// Error Handling
		 }
	 try {
		  	WSSecurityHelper.revokeSSOCookies(req, res);
		 } catch(Exception e) {
		 	// catch all possible exceptions if you want or handle them separately
		 	out.println("JAASLogoutServlet: logout Exception = " + e.getMessage());
		 	throw new ServletException(e);
		 }
	 }

次の作業

JAAS 認証について詳しくは、Java Authentication and Authorization Service によるプログラマチック・ログインの開発を参照してください。 AuthenLoginModule ログイン・モジュールについて詳しくは、例: サーバー・サイドの Java Authentication and Authorization Service の認証およびログイン構成のカスタマイズを参照してください。



関連概念
プログラマチック・ログイン
関連タスク
Java Authentication and Authorization Service によるプログラマチック・ログインの開発
ユーザーの認証
関連資料
サーバー・サイドの Java Authentication and Authorization Service の認証およびログイン構成のカスタマイズ
タスク・トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 10:52:11 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.zseries.doc/info/zseries/ae/tsec_jaasauthentprog.html