JMSリソース・アダプタは、Java Connector Architectureセキュリティ規約に完全に準拠しています(Java™ EEコネクタ・アーキテクチャ仕様バージョン1.7を参照)。
アウトバウンド通信の場合、ra.xml
ファイルで、authentication-mechanism-type、credential-interfaceおよびreauthentication-support要素を指定できます。
たとえば、次のように構成します。
. . . <outbound-resourceadapter> . . . <authentication-mechanism> <authentication-mechanism-type> BasicPassword </authentication-mechanism-type> <credential-interface>javax.resource.spi.security.PasswordCredential</credential-interface> </authentication-mechanism> <reauthentication-support>false</reauthentication-support> . . . </outbound-resourceadapter> . . .
次の各項では、WebLogic JMSセキュリティに関する情報を提供します。
WebLogic JMSでは、スレッドベースのセキュリティ・モデルが使用されます。スレッドのサブジェクトは、JNDIユーザー名とパスワード資格証明としてJNDIルックアップで確立されます。WebLogic JMSでは、サーバーで後から認証する際に使用されるのと同じサブジェクトの下の同じスレッド内で、関連するすべての操作が実行されると想定しています。JMS接続の作成に使用されるユーザー名とパスワードは、認証フェーズでは無視されます。
次のどの方法でもユーザー名とパスワード資格証明を指定できます。
ホスト・アプリケーション・サーバーのJava Connector Architectureコンテナを使用することをお薦めします。ほとんどのベンダーが、セキュアなメソッドを使用して資格証明を動的に設定する方法を提供するJava Connector Architectureコンテナを提供しています。その他のメソッドでは、通常、資格証明はクリア・テキストで格納されます。資格証明を暗号化しないメソッドを選択した場合は、Oracleウォレットを使用してそれらを保護します。
詳細は、Oracleウォレットを使用した資格証明の保護を参照してください。
アプリケーションは、インバウンドのリソース・アダプタのactivation-spec
で、ユーザー名とパスワード資格証明を指定できます。activation spec
は、外部アプリケーション・サーバーのJava Connector ArchitectureコンテナによってJMSリソース・アダプタに渡されます。
外部アプリケーション・サーバーのJava Connector Architectureコンテナを使用してユーザー名とパスワードを指定する方法の詳細は、Oracle GlassFish ServerでのJMSリソース・アダプタの管理を参照してください。
次に示すように、ユーザー名とパスワード資格証明を含めるようにresourceProviderDefinitions
のjndiEnv
プロパティを構成できます。
<config-property-name>resourceProviderDefinitions</config-property-name> <config-property-type>java.lang.String</config-property-type> <config-property-value> (weblogicAdmin: jndiEnv=(java.naming.factory.initial=weblogic.jms.WrappedInitialContextFactory, java.naming.provider.url='t3://host:port', java.naming.security.principal=xxxx, java.naming.security.credentials=yyyy)) </config-property-value> </config-property>
詳細は、資格証明を設定するためのJNDIの構成例を参照してください。
JMSリソース・アダプタでは、JNDIの新しい初期コンテキスト・ファクトリweblogic.jms.WrappedInitialContextFactory
を使用したセキュリティ・モデルに基づく接続が提供されるため、外部アプリケーション・サーバーとのセキュリティの相互運用性が簡略化されます。生成されるサブジェクトは、次のルールを使用して決定されます。
サブジェクトは、接続ユーザー名とパスワードを使用して作成された各接続に関連付けられています。
ユーザー名とパスワードを指定せずに接続が作成された場合、JNDIのユーザー名とパスワードが使用されます。
後続のすべてのJMS操作では、スレッド上にあるサブジェクトに関係なく、接続の作成コールで生成されたサブジェクトが使用されます。
アウトバウンド接続の場合、createConnection(java.lang.String, java.lang.String)
APIを使用できます。
JMSリソース・アダプタでは、アウトバウンド接続用のユーザー名とパスワードを実装するための構成属性は提供されていません。
アウトバウンド接続の保護に関する詳細は、通信の保護を参照してください。
一部の外部アプリケーション・サーバーでは、ドメイン間でのセキュアな資格証明が提供されている場合があります。その場合、詳細はベンダーのドキュメントを参照してください。
Oracleウォレットでは、複数のドメイン間で資格証明を保護するための単純でわかりやすいメソッドが提供されています。これにより、個々の資格証明を変更しなくてもウォレットを更新して資格証明を更新できます。
資格証明を保護するには、次のことを行う必要があります。
ウォレット・ファイルを作成し、JMSリソース・アダプタ暗号化ユーティリティを使用して必要な資格証明を追加する。このステップにより、保護された資格証明にエイリアスをマッピングするcwallet.sso
ファイルが、指定された場所に作成されます。
詳細は、wljmsra暗号化ユーティリティの使用を参照してください。
JMSリソース・アダプタのデプロイメント・ディスクリプタまたは接続プール構成のエイリアスを指定する。
JMSリソース・アダプタのデプロイメント・ディスクリプタまたは接続プール構成のcwallet.sso
ファイルの場所を指定する。
次の表は、JMSリソース・アダプタJNDI環境プロパティの設定方法の例を示しています。
JNDIの設定 | 動作 |
---|---|
java.naming.security.principal=principal
java.naming.security.principal=principal
java.naming.security.credentials=credentials
|
JMSリソース・アダプタの実行時には、Oracle WebLogic Server宛先にアクセスするために、 |
java.naming.security.principal=principal
java.naming.security.credentials=-
weblogic.jms.walletDir=dirctory
|
JMSリソース・アダプタの実行時には、ユーザー名として |
java.naming.security.principal=-
java.naming.security.credentials=-
weblogic.jms.walletDir=dirctory
|
JMSリソース・アダプタの実行時には、ユーザー名を取得および使用するために、 |
java.naming.security.principal=-
java.naming.security.credentials=-
weblogic.jms.walletDir=dirctory
|
JMSリソース・アダプタの実行時には、ユーザー名と、 |
java.naming.security.principal=principal
java.naming.security.credentials=-> weblogic.jms.walletDir=dirctory
|
JMSリソース・アダプタの実行時には、ユーザー名として |
JMSリソース・アダプタは、Oracleウォレット・ファイルにアプリケーションの資格証明を追加するためのコマンド行ユーティリティを提供します。ユーティリティを実行するには、WL_HOME
server/lib
ディレクトリに変更し、次のコマンドを入力して有効なコマンドを表示します。
java -jar wljmsra.rar help Usage: create <dir>: Create wallet under given directory. add <alias> <value> [dir]: Add value using the alias. replace <alias> <value> [dir]: Replace value of the alias. remove <alias> [dir]: Remove an alias. dump [dir]: List all aliases in the wallet. help: This help.
次の例では、ディレクトリmywallet
にウォレット・ファイルを作成するための暗号化ユーティリティを使用します。
java -jar wljmsra.rar create mywallet Info: Created wallet under directory 'mywallet'.
次の例では、エイリアスを作成するための暗号化ユーティリティを使用します。
java -jar wljmsra.rar add user6 pwd6 Info: Added alias 'user6'.
次の例では、エイリアスを置換するための暗号化ユーティリティを使用します。
java -jar wljmsra.rar replace user6 newpwd6 Info: Replaced alias 'user6'.
次の例では、エイリアスを削除するための暗号化ユーティリティを使用します。
java -jar wljmsra.rar remove user6 Info: Removed alias 'user6'.
次の例では、ウォレット内のエイリアスを表示するための暗号化ユーティリティを使用します。
java -jar wljmsra.rar dump mywallet Info: Aliases found in wallet under 'mywallet'. user4 Info: 1 aliases found.