HTTPS を使用して Workshop Web サービスをセキュアにする

ここでは、HTTPS を使用して WebLogic Workshop Web サービスを公開する方法について説明します。  

WebLogic Server セキュリティ

WebLogic Workshop で構築した Web サービスは、Web アプリケーションの形式で WebLogic Server にデプロイされます。必要に応じてセキュアまたは非セキュアの転送プロトコルを使用して、1 つのアプリケーション内にある複数のサービスを公開できます。HTTP ではなく HTTPS を使用して公開するよう指定することで、特定のサービスをセキュアにします。HTTPS は、クライアントと Web サービス間の通信を暗号化し、サーバがクライアントに提示するデジタル証明書を使用して、サーバによる一定の認証を提供します。サーバからクライアントに提供される一方通行の認証を、双方向の認証で補完できます。双方向の認証では、サーバから提示される証明書に加えて、クライアントもサーバにデジタル証明書を提示します。

HTTPS を使用する

Web サービスを WebLogic Server にデプロイする際に、Web サービス公開プロトコルを指定します。HTTP プロトコルではなく、HTTPS プロトコルで Web サービスを公開するには、以下の手順を実行します。

  1. Web サービスのデプロイ先となる WebLogic Server が HTTPS 対応ポートでリスンしていることを確認します。 WebLogic Server 7.0 マニュアルのSSL プロトコルのコンフィグレーションを参照してください。

  2. Web サービスの WSDL ファイルがその HTTPS 対応ポートを公開していることを確認します。

Web サービスの WSDL でクライアントを HTTPS 対応ポートに転送するには、プロジェクトの WEB-INF ディレクトリにある weblogic-jws-config.xml ファイルを編集します。weblogic-jws-config.xml ファイルでは、専用の HTTP ポートと HTTPS ポートを設定し、個々の Web サービスがどちらを使用するかを設定できます。

weblogic-jws-config.xml ファイルでは、複数の <jws> 要素を指定できます。各 <jws> 要素内の <class-name> 要素で Web サービスを指定し、<port> 要素で HTTP または HTTPS のいずれかの公開プロトコルを指定します。Web サービスで HTTPS 対応ポートを使用するよう指定すると、Web サービス WSDL でアプリケーションの HTTPS 対応ポートが公開されます。  

以下の weblogic-jws-config.xml ファイルの例では、HTTPS ポート(ポート 7002 で指定)で Web サービス MySecureService を公開する方法を示します。weblogic-jws-config.xml ファイルを変更するたびにアプリケーション EAR を再コンパイルし、アプリケーションを再デプロイする必要があります。そうしないと、デプロイされたアプリケーションに変更内容が反映されません。

注意 : jwsCompile コマンドでパラメータを指定すると、weblogic-jws-config.xml ファイルの設定をコンパイル時に上書きできます。詳細については、Web サービスをデプロイするおよび JwsCompile コマンドを参照してください。

<config>
 <protocol>http</protocol>
 <hostname>localhost</hostname>
 <http-port>7001</http-port>
 <https-port>7002</https-port>
 <jws>
  <class-name>MySecureService</class-name>
  <protocol>https</protocol>
 </jws>
 ...
</config>

 

異なるサービスを異なるポートで公開するには、<jws> 要素を追加し、子要素の <class-name> と <protocol> を指定します。以下の weblogic-jws-config.xml ファイルの例では、HelloWorld サービスが HTTP 対応ポート、HelloWorldSecure サービスが HTTPS 対応ポートを使用します。

注意 : この例では、デフォルトの <protocol> タグに http という値が指定されています。厳密に言えば、HelloWorld が HTTP ポートを使用するよう指定するために jws 固有の <protocol> 要素を使用する必要はありません。ここではわかりやすくするために、HelloWorld の jws 固有の <protocol> 要素を使用しています。

<config>
 


    <!--  The global <protocol> element says that any service in the project file should     be exposed on http, unless otherwise specified.  
    -->
 <protocol>http</protocol> <hostname>localhost</hostname> <http-port>7001</http-port> <https-port>7002</https-port>
     <!--It is, strictly speaking, superfluous to use the jws-specific <protocol tag to     declare that the HelloWorld service should be exposed on the http protocol this was     accomplished by the global <protocol> element.-->
 <jws>
     <!-- Recall that JWS files are really Java classes, hence, the element name 'class-name'.
     -->
  <class-name>HelloWorld</class-name>  <protocol>http</protocol> </jws> <jws>  <class-name>HelloWorldSecure</class-name>  <protocol>https</protocol> </jws>
... </config>