9 RESTサーバーを介したOracle Coherence HTTP管理の保護
この章の内容は次のとおりです。
Oracle Coherence HTTP管理サーバーの保護について
Coherence HTTP管理サーバーの認証では、HTTP Basic、クライアント側のSSL証明書、およびHTTP Basicとクライアント側のSSL証明書の併用がサポートされています。
『Oracle Coherenceの管理』のRESTを使用した管理情報へのアクセスに関する項を参照してください。
Coherence HTTP管理サーバーHTTPアクセプタのBasic認証
HTTP Basic認証は、HTTP認可リクエスト・ヘッダーにエンコードされて送信される資格証明(ユーザー名とパスワード)を使用して認証を行います。
この項には次のトピックが含まれます:
Coherence HTTP管理サーバーHTTPアクセプタのBasic認証の指定
デフォルトのmanagement-http-config.xml
はcoherence-management.jar
にあります。
HTTP管理アクセプタのBasic認証を指定するには、coherence.management.http.auth
システム・プロパティを値basic
に設定するか、デフォルトのmanagement-http-config.xml
をオーバーライドし、<auth-method>
子xml要素を値basic
に指定します。
Coherence HTTP管理サーバー・ログイン・モジュールの指定
HTTP Basic認証は、HTTP Basic認証ヘッダーから渡されたクライアントの資格証明を認証するJAAS javax.security.auth.spi.LoginModule
実装を必要とします。その結果として生成されるSubject
は、必要に応じて、Oracle Coherenceセキュリティ・フレームワークの認可に使用できます。『Java認証・承認サービス(JAAS)リファレンス・ガイド』のLoginModuleに関する項を参照してください。
ログイン・モジュールを指定するには、COHERENCE_HOME/lib/security/login.config
ログイン構成ファイルを変更し、使用するログイン・モジュール実装を含むCoherenceエントリを追加します。たとえば:
CoherenceManagement { package.MyLoginModule required; };
実行時、コマンド行から(java.security.auth.login.config
システム・プロパティを使用)、またはJavaセキュリティ・プロパティ・ファイルで、使用するlogin.config
ファイルを指定します。
便宜を図るため、標準的なJavaランタイム・クラスにのみ依存するJavaキーストア(JKS) LoginModule
の実装が用意されています。このクラスは、COHERENCE_HOME/lib/security/
coherence-login.jar
ファイルにあります。実装を使用するには、このライブラリを、プロキシ・サーバーのクラスパスか、JREのlib/ext
(標準拡張)ディレクトリに配置します。
login.config
構成ファイルで、次のとおりJKSログイン・モジュール実装を指定します。
CoherenceManagement { com.tangosol.security.KeystoreLogin required keyStorePath="${user.dir}${/}security${/}keystore.jks"; };
エントリには、キーストアへのパスが含まれています。keyStorePath
変数をキーストアの場所に変更します。「Java SSLアーティファクトの生成」を参照してください。
Oracle Coherence HTTP管理サーバーでのSSL認証の使用
クライアント側のSSL証明書は、クライアントを認証するHTTPアクセプタに渡されます。SSLでは、SSLベースのソケット・プロバイダがHTTPアクセプタ用に構成されている必要があります。
この項には次のトピックが含まれます:
Coherence HTTP管理アクセプタ用のSSLソケット・プロバイダの構成
認証にSSLを使用する場合は、HTTPアクセプタ用のSSLソケット・プロバイダを構成します。HTTPアクセプタ用にSSLを構成するには、SSLソケット・プロバイダ定義を明示的に追加するか、オペレーション・オーバーライド・ファイル内のSSLソケット・プロバイダ定義を参照します。
SSLソケット・プロバイダの明示的な定義
HTTPアクセプタ用にSSLソケット・プロバイダを明示的に構成するには、各<proxy-scheme>
定義の<http-acceptor>
要素内に<socket-provider>
要素を追加します。Oracle Coherenceでのアプリケーションの開発のsocket-providerを参照してください。デフォルト値をオーバーライドするには、coherence.jar
からmanagement-http-config.xml
を抽出し、ファイルを変更してから、クラス・パスのcoherence.jar
の前に配置します。オーバーライド-Dcoherence.management.http.provider=your-socket-provider
を使用して、ソケット・プロバイダを指定することもできます。
例10-1は、<protocol>
要素および<algorithm>
要素にデフォルト値(それぞれ、TLS
およびSunX509
)を使用するSSLソケット・プロバイダの構成を示しています。これらは完全を期して示しますが、デフォルト値使用の際には省略されることがあります。
例10-1では、アイデンティティ・キーストア(server.jks
)と信頼キーストア(trust.jks
)の両方を構成します。これは典型的な双方向SSL認証であり、クライアントとプロキシの双方が、デジタル証明書を交換し、互いのIDを確認する必要があります。一方向SSL認証の場合は、プロキシ・サーバーの構成にアイデンティティ・キーストアを含める必要がありますが、信頼キーストアは含める必要がありません。
例9-1 HTTP Acceptor用のSSL構成のサンプル
<proxy-scheme> <service-name>ManagementHttpProxy</service-name> <acceptor-config> <http-acceptor> ... <socket-provider> <ssl> <protocol>TLS</protocol> <identity-manager> <algorithm>SunX509</algorithm> <provider system-property="coherence.management.http.security.keystore.provider"/> <key-store> <url system-property="coherence.management.http.security.keystore">file:server.jks</url> <password system-property="coherence.management.http.security.keystore.password"/> <type>JKS</type> </key-store> <password system-property="coherence.management.http.security.identitymanager.password”/> </identity-manager> <trust-manager> <algorithm/>SunX509</algorithm> <provider system-property="coherence.management.http.security.truststore.provider"/> <key-store> <url system-property="coherence.management.http.security.truststore">file:truststore.jks</url> <password system-property="coherence.management.http.security.truststore.password"/> <type>JKS</type> </key-store> </trust-manager> </ssl> </socket-provider> ... <auth-method>cert</auth-method> </http-acceptor> </acceptor-config> <autostart>true</autostart> </proxy-scheme>
RESTを介したCoherence HTTP管理を使用したSSLソケット・プロバイダ定義の参照
次の例では、オペレーション・デプロイメント・ディスクリプタの<socket-providers>
要素で定義されているSSLソケット・プロバイダの構成を、構成のid
属性(ssl
)を指定することによって参照します。『Oracle Coherenceでのアプリケーションの開発』のsocket-providersに関する項を参照してください。
ノート:
事前定義済SSLソケット・プロバイダが、オペレーション・デプロイメント・ディスクリプタに含まれており、ssl
という名前です。事前定義済SSLソケット・プロバイダは、双方向SSL接続用に構成されており、信頼されているピアがすべて単一のJKSキーストア内に存在するピア信頼に基づいています。「事前定義済SSLソケット・プロバイダの使用方法」を参照してください。別のSSLソケット・プロバイダを構成するには、オペレーション・オーバーライド・ファイルを使用して事前定義済SSLソケット・プロバイダを変更するか、必要に応じてソケット・プロバイダの構成を作成します。
<proxy-scheme> <service-name>ManagementHttpProxy</service-name> <acceptor-config> <http-acceptor> ... <socket-provider>ssl</socket-provider> ... <auth-method>cert</auth-method> </http-acceptor> </acceptor-config> <autostart>true</autostart> </proxy-scheme>
HTTPクライアント・アクセスの構成については、「保護されたRESTサービスへのアクセス」を参照してください。