このトピックを使用して、Java Authentication and Authorization Service によるプログラマチック・ログインを開発します。
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 リソースの許可検査のために使用されます。
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 役割ベースの保護リソースに対して許可検査を実行するのに必要なプリンシパルおよびクレデンシャルが含まれています。
前述の 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 ログイン構成を 定義して、クライアント・プロセスまたはサーバー・プロセスでカスタム・サブジェクトを作成する プログラマチック・ログインを実行することができます。本製品のセキュリティー・ランタイムの サブジェクトを、プロトコル経由でクライアントから認証情報を送信したり、 サーバー上で許可を処理したりするために使用するには、 特定のクレデンシャルとプリンシパルが必要です。必要なクレデンシャルは、 提供されているログイン・モジュールから生成されます。
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 を検出する方法を決定する場合の優先順位を示しています。