WebSphere Application Server Version 6.1 Feature Pack for Web Services   
             オペレーティング・システム: AIX , HP-UX, i5/OS, Linux, Solaris, Windows, Windows Vista, z/OS

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

Java Authentication and Authorization Service によるプログラマチック・ログインの開発

このトピックを使用して、Java Authentication and Authorization Service によるプログラマチック・ログインを開発します。

始める前に

Java Authentication and Authorization Service (JAAS) は、認証用の 戦略的アプリケーション・プログラミング・インターフェース (API) を表します。

[AIX HP-UX Linux Solaris Windows] [i5/OS] JAAS は、 Common Object Request Broker Architecture (CORBA) プログラマチック・ログイン・アプリケーション・プログラミング・インターフェース (API) に置き換わるものです。

WebSphere Application Server は、JAAS に次のような拡張機能を提供します。
  • サーバー上のリモート・リソースにアクセスするためのシン・クライアント・アプリケーション環境の セットアップ方法についての詳細は、CosNaming (CORBA ネーミング・インターフェース) を使用するアプリケーションの開発 の項目を参照してください。
  • アプリケーションがカスタム JAAS ログイン構成を使用する場合は、JAAS ログイン構成が正しく定義されていることを確認します。 詳しくは、Java Authentication and Authorization Service のプログラマチック・ログインの構成 を参照してください。
  • 一部の JAAS API は、Java 2 セキュリティー許可によって保護されています。 これらの API をアプリケーション・コードで使用する場合は、これらのアクセス権がアプリケーションの was.policy ファイルに追加されていることを確認してください。
    詳しくは、以下の項目を参照してください。 Java 2 セキュリティー権限で保護される API に ついては、IBM Developer Kit の Java Technology Edition で、セキュリティー: 学習用リソース の JAAS および WebSphere Application Server のパブリック API の資料を参照してください。
    この資料のサンプル・コードで使用される API の一部、およびこれらの API によって要求される Java 2 セキュリティー権限を以下のリストに示します。
    • javax.security.auth.login.LoginContext コンストラクターは、javax.security.auth.AuthPermission の "createLoginContext" オブジェクトで保護されています。
    • javax.security.auth.Subject.doAs および com.ibm.websphere.security.auth.WSSubject.doAs メソッドは、javax.security.auth.AuthPermission の "doAs" オブジェクトで保護されています。
    • javax.security.auth.Subject.doAsPrivileged および com.ibm.websphere.security.auth.WSSubject.doAsPrivileged メソッドは、javax.security.auth.AuthPermission の "doAsPrivileged" オブジェクトで保護されています。
  • 許可検査用 Java 2 Platform, Enterprise Edition (J2EE) リソースに対する拡張モデル

    JAAS バージョン 1.0 の設計上のミスにより、javax.security.auth.Subject.getSubject メソッドは、 java.security.AccessController.doPrivileged コード・ブロック内の実行スレッドに 関連付けられているサブジェクトを戻しません。このミスのため、矛盾した振る舞いが発生し、望ましくない影響を受ける可能性があります。 com.ibm.websphere.security.auth.WSSubject クラスは、サブジェクトを実行スレッドに関連付ける予備手段を提供します。 com.ibm.websphere.security.auth.WSSubject クラスは、許可検査のために、JAAS モデルを Java 2 Platform, Enterprise Edition (J2EE) リソースに拡張します。 サブジェクトが com.ibm.websphere.security.auth.WSSubject.doAs メソッド内の実行スレッドと関連付けられる場合、または com.ibm.websphere.security.auth.WSSubject.doAsPrivileged コード・ブロックが製品の証明書を含む場合、サブジェクトは J2EE リソースの許可検査のために使用されます。

  • 新規 JAAS ログイン構成の定義におけるユーザー・インターフェース・サポート
    JAAS ログイン構成は、管理コンソールで構成して、構成リポジトリーに保管することができます。アプリケーションは、管理コンソールで新規 JAAS ログイン構成を定義でき、 データは構成リポジトリーで永続化されます。 しかし、WebSphere Application Server は現在でも、JAAS のデフォルト・インプリメンテーションが提供するデフォルトの JAAS ログイン構成フォーマット (プレーン・テキスト・ファイル) をサポートしています。 重複ログイン構成が構成リポジトリーとプレーン・テキスト・ファイル・フォーマットの両方で定義されている場合は、リポジトリーで定義された構成が優先されます。 ログイン構成を構成リポジトリーで定義することには、次のような利点があります。
    • JAAS ログイン構成を定義する際に、管理コンソールがサポートされます。
    • JAAS ログイン構成の集中管理
    • JAAS ログイン構成の配布
  • プログラマチック認証を行うアプリケーション・サポート

    WebSphere Application Server は、アプリケーションが Websphere セキュリティー・ランタイムに対してプログラマチック認証を行うための JAAS ログイン構成を提供しています。これらの構成は、Websphere Application Server によって構成された認証メカニズム (Simple WebSphere Authentication Mechanism (SWAM) または Lightweight Third Party Authentication (LTPA)) および提供される認証データに基づくユーザー・レジストリー (ローカル OS、Lightweight Directory Access Protocol (LDAP)、カスタム・レジストリー、またはフェデレーテッド・リポジトリー) に対して認証を行います。これらの JAAS ログイン構成で認証されたサブジェクトには、Websphere セキュリティー・ランタイムが J2EE 役割ベースの保護リソースに対して許可検査を実行するのに必要なプリンシパルおよびクレデンシャルが含まれています。

    注: SWAM は WebSphere Application Server バージョン 6.1 では 推奨されません。また将来のリリースでは除去される予定です。
    以下に、WebSphere Application Server が提供する JAAS ログイン構成を示します。
    • WSLogin JAAS ログイン構成。汎用的な JAAS ログイン構成では、Java クライアント、 クライアント・コンテナー・アプリケーション、サーブレット、JavaServer Pages (JSP) ファイル、 および Enterprise JavaBeans (EJB) コンポーネントを使用して、ユーザー ID とパスワードに基づく認証、またはトークンに基づく WebSphere Application Server のセキュリティー・ランタイムに対する認証を行うことができます。ただし、 この構成は、クライアント・コンテナーのデプロイメント記述子で指定されている CallbackHandler ハンドラーを受け入れません。
    • ClientContainer JAAS ログイン構成。この JAAS ログイン構成は、 クライアント・コンテナーのデプロイメント記述子で指定される CallbackHandler ハンドラーに従います。 このログイン構成のログイン・モジュールは、アプリケーション・コードがログイン・コンテキストでコールバック・ハンドラーを 指定したとしても、クライアント・コンテナーのデプロイメント記述子で CallbackHandler ハンドラーが指定されていれば、 それを使用します。この構成は、クライアント・コンテナー・アプリケーションのためのものです。

      前述の JAAS ログイン構成で認証されるサブジェクトには、プリンシパル com.ibm.websphere.security.auth.WSPrincipal と クレデンシャル com.ibm.websphere.security.cred.WSCredential が含まれています。認証済みのサブジェクトが com.ibm.websphere.security.auth.WSSubject.doAs または その他の doAs メソッドに渡されると、製品のセキュリティー・ランタイムは、 com.ibm.websphere.security.cred.WSCredential サブジェクトに基づき、J2EE リソース上で許可検査を実行することができます。

  • ユーザー定義 JAAS ログイン構成

    上記以外の JAAS ログイン構成を 定義して、クライアント・プロセスまたはサーバー・プロセスでカスタム・サブジェクトを作成する プログラマチック・ログインを実行することができます。本製品のセキュリティー・ランタイムの サブジェクトを、プロトコル経由でクライアントから認証情報を送信したり、 サーバー上で許可を処理したりするために使用するには、 特定のクレデンシャルとプリンシパルが必要です。必要なクレデンシャルは、 提供されているログイン・モジュールから生成されます。

    Pure Java クライアントのログインに必要な ログイン・モジュールは次のとおりです。
    • com.ibm.ws.security.common.auth.module.WSLoginModuleImpl (必須);
    使用されるコールバック・ハンドラーでは、このログイン・モジュールを使用できるほか、 以下のコールバック・クラスも処理できなければなりません。
    • javax.security.auth.callback.NameCallback
    • javax.security.auth.callback.PasswordCallback
    コールバック・ハンドラーではユーザー名とパスワードを指定する必要があります。 クライアント・サイドのサブジェクトに追加されるカスタム・クラスは、 セキュリティー属性の伝搬が使用可能になっていれば、常に自動でサーバーに 伝搬されるはずです。Pure Java クライアントで伝搬を使用可能にする方法については、 アプリケーション・サーバー間のセキュリティー属性の伝搬 の該当するステップを参照してください。
    注: 正しくこの状態になるためには、サブジェクトに追加されるクラスが Java シリアライズ可能かつデシリアライズ可能で なければなりません。
    サーバー・ログインに必要なログイン・モジュールは次のとおりです。
    • com.ibm.ws.security.server.lm.ltpaLoginModule (必須);
    • com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule (必須);
    サーバー・サイド・ログイン構成で使用されるコールバックについては、 サーバー・サイドの Java Authentication and Authorization Service の認証およびログイン構成のカスタマイズ を参照してください。
  • Pure Java クライアントでのプログラマチック・ログインのネーミング要件

    Pure Java クライアント上でプログラマチック・ログインが行われ、 プロパティー com.ibm.CORBA.validateBasicAuth が true である場合は、 SecurityServer がどこにあるかをセキュリティー・コードで認識している必要があります。 通常、java.naming.provider.url プロパティーがシステム・プロパティーとして設定されている場合、あるいはそのプロパティーが jndi.properties ファイルで設定されている場合は、デフォルトの InitialContext で十分です。 それ以外の場合は、システム全体で同じ java.naming.provider.url プロパティーを 設定することは望ましくありません。 この場合は、sas.client.props ファイルで、セキュリティー固有のブートストラップ情報を指定する必要があります。 以下は、Pure Java クライアントで SecurityServer を検出する方法を決定する場合の優先順位を示しています。

注: z/OS サーバーに接続する場合は、 必ず com.ibm.CORBA.validateBasicAuth=false と設定してください。 この関数は、現在分散クライアントから z/OS サーバーに対しては機能しません。 それは、SecurityServer が UNAUTHENTICATED のプリンシパルを使用して配置されており、それが z/OS システムでは受け入れられないためです。

プロシージャー

  1. sas.client.props ファイルを使用して、以下のプロパティーを探します。
    com.ibm.CORBA.securityServerHost=myhost.mydomain
    com.ibm.CORBA.securityServerPort=mybootstrap port
    これらのプロパティーを指定すると、セキュリティーはここで必ず SecurityServer を探します。指定するホストおよびポートは、任意の有効な WebSphere ホストおよびブートストラップ・ポートにすることができます。SecurityServer はすべてのサーバー・プロセスに存在するので、 どのホストまたはポートを選択するかは重要な問題ではありません。 クライアント・プロセス内のセキュリティー・インフラストラクチャーは、指定されている場合、sas.client.props ファイル内の情報に基づいて SecurityServer を検索します。
  2. 新規の InitialContext() を取得するには、 以下のコードをクライアント・アプリケーションに配置します。
    ...
       import java.util.Hashtable;
      	import javax.naming.Context;
      	import javax.naming.InitialContext;
      	...
       
    // Perform an InitialContext and default lookup prior to logging 
    // in so that target realm and bootstrap host/port can be 
    // determined for SecurityServer lookup.
       
       			Hashtable env = new Hashtable();
       			env.put(Context.INITIAL_CONTEXT_FACTORY, 			"com.ibm.websphere.naming.WsnInitialContextFactory");
    			env.put(Context.PROVIDER_URL, 			"corbaloc:iiop:myhost.mycompany.com:2809");
    			Context initialContext = new InitialContext(env);
       			Object obj = initialContext.lookup("");
    
    			// programmatic login code goes here.
    
    このステップは、プログラマチック・ログインを実行する前に完了しておいてください。 このコードでネーミング・コンテキスト用の URL プロバイダーを指定するのですが、そのプロバイダーは、認証するセル内の有効な WebSphere Application Server を指すものでなければなりません。 単一のセルを指定することで、別のセルに移動するスレッド固有のプログラマチック・ログインが、システム全体にわたる単一の SecurityServer ロケーションを持つことができるようになります。
  3. ネーミングの優先順位規則に依存する、デフォルトの新規 InitialContext() メソッドを使用します。 これらの規則は、例: デフォルトの初期コンテキストの取得 の項目で定義されています。

例: プログラマチック・ログイン の項目を参照してください。



サブトピック
[z/OS] カスタム System Authorization Facility マッピング・モジュール
[z/OS] LDAP から System Authorization Facility (SAF) マッピング・モジュールへの 1 対 1 のカスタム・マッピング
[z/OS] ローカルでないオペレーティング・システムによるカスタム System Authorization Facility マッピング・モジュールの書き込み
[z/OS] Java Authentication and Authorization Service ログイン・モジュールを使用した レジストリー・プリンシパルから System Authorization Facility ユーザー ID へのマップ
[z/OS] WebSphere Application Server 用のカスタム System Authorization Facility マッピング・モジュールのインストールおよび構成
例: プログラマチック・ログイン
関連概念
プログラマチック・ログイン
関連タスク
Java Authentication and Authorization Service のプログラマチック・ログインの構成
CosNaming (CORBA ネーミング・インターフェース) を使用するアプリケーションの開発
Java Authentication and Authorization Service によるアプリケーション・ログインの カスタマイズ
関連資料
例: プロバイダー URL プロパティーの設定による初期コンテキストの取得
セキュリティー: 学習用リソース
タスク・トピック    

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

最終更新: Jan 21, 2008 4:10:06 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.wsfep.multiplatform.doc/info/ae/ae/tsec_pacs.html