9 RESTサーバーを介したOracle Coherence HTTP管理の保護
この章の内容は次のとおりです。
- Oracle Coherence HTTP管理サーバーの保護について
Coherence HTTP管理サーバーの認証および認可はデフォルトでは無効で、必要に応じて有効にします。 - Coherence HTTP管理サーバーHTTPアクセプタのBasic認証
Coherence HTTP管理サーバーの認証を行うようにHTTPアクセプタを構成できます。 - Oracle Coherence HTTP管理サーバーでのSSL認証の使用
SSLを使用して、Coherence HTTP管理サーバーに認証を提供できます。SSLは、デジタル証明書および暗号化キーを使用して識別と信頼の両方を確立する認証メカニズムを提供します。
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を参照してください。デフォルトのmanagement-http-config.xmlは、これをコピーして、改訂したmanagement-http-config.xmlをクラスパスでcoherence-management.jarより前に配置することでオーバーライドできます。
例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>ManagementHttpProxyService</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サービスへのアクセス」を参照してください。