プロジェクトでの HTTP バインディングコンポーネントの使用

HTTP バインディングコンポーネントでの基本認証の使用

基本認証を使用すると、トランザクションを行う場合にユーザー名とパスワードの形式で資格情報を要求することができます。資格情報はプレーンテキストで送信されます。プライバシを確保するために、ユーザー名とパスワードは送信前に Base 64 文字のシーケンスにエンコードされます。たとえば、ユーザー名「Fred」とパスワード「Dinosaur」は組み合わされて「Fred:Dinosaur」となり、Base 64 でエンコードされると「RnJlZDpEaW5vc2F1cg0K」になります。

プロバイダ Web サービスの場合は、クライアントからの要求メッセージの要求ヘッダーにユーザー名とパスワードのフィールドが含まれています。

コンシューマ Web サービスの場合は、基本認証を有効にして Web サービスを呼び出すと、認証の要求ヘッダーにユーザー名とパスワードが追加されます。

基本認証の詳細については、RFC 1945 (Hypertext Transfer Protocol HTTP/1.0)、RFC 2616 (Hypertext Transfer Protocol HTTP/1.1)、および RFC 2617 (HTTP Authentication: Basic and Digest Access Authentication) を参照してください。

基本認証でサポートされる機能

基本認証をサポートするには、WSDL にポリシーを指定します。基本認証ポリシーを WSDL に追加するには、手作業で行うか、Tango (WSIT) を介して提供され CASA からアクセスできる「WS-Policy Attachment」ウィンドウを使用します。基本認証ポリシーは WSDL のルートレベルに指定されます。WSDL の「Port type」セクションにポリシーの参照が作成されて、ポリシーがエンドポイントにバインドされます。

基本認証をサポートするために、HTTP バインディングコンポーネントでは次の WSDL 要素が定義されます。

コンシューマエンドポイントの認証機構

Web サービスコンシューマエンドポイントには、 3 種類の認証機構がサポートされています。

これらの機構の 1 つを使用するようにコンシューマエンドポイントを設定するには、エンドポイントの Policy の MustSupportBasicAuthentication 要素に子要素として追加します。

以降の節では、これらの機構の詳細について説明します。

WssTokenCompare

WssTokenCompare 要素を使用するには、Policy 要素が存在し、認証に使用されるユーザー名とパスワードが指定されている必要があります。HTTP Authorization 要求ヘッダーから抽出されたユーザー名およびパスワードは、Policy の WssUsernameToken10 要素と WssPassword 要素に指定されているユーザー名およびパスワードと比較されます。

次のサンプル WSDL には、WssTokenCompare を使用するためのポリシーとその参照が含まれています。パスワードが WSDL に公開されないように、パスワードにはアプリケーション変数トークンが使用されていることに注意してください。パスワードの値は、NetBeans を使用してコンポーネントのプロパティーで指定できます。「アプリケーション変数を使用した名前/値ペアの定義」を参照してください。


<wsdl:service name="echoService">
    <wsdl:port name="echoPort" binding="tns:echoBinding">
        <soap:address location="http://pponnala-tecra-xp.stc.com:18181/
         echoService/echoPort"/>
        <wsp:PolicyReference URI="#HttpBasicAuthBindingBindingPolicy"/>
    </wsdl:port>
</wsdl:service>

<wsp:Policy wsu:Id="HttpBasicAuthBindingBindingPolicy">
    <mysp:MustSupportBasicAuthentication on="true">
        <mysp:BasicAuthenticationDetail>
           <mysp:WssTokenCompare/>
        </mysp:BasicAuthenticationDetail>
    </mysp:MustSupportBasicAuthentication>
    <mysp:UsernameToken mysp:IncludeToken="http://schemas.xmlsoap.org/ws/
     2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
       <wsp:Policy>
            <sp:WssUsernameToken10>wilma</sp:WssUsernameToken10>
            <sp:WssPassword>${pass_token}</sp:WssPassword>
       </wsp:Policy>
  </mysp:UsernameToken>
</wsp:Policy>

注 –

上記のコードは読みやすいように折り返されています。


AccessManager

AccessManager を使用するには、Sun Access Manager を使用して HTTP クライアントの資格情報を認証するようにコンシューマエンドポイントを設定します。HTTP バインディングコンポーネントの SOAP バインディングは Sun Access Manager とシームレスに統合され、HTTP クライアントの資格情報 (HTTP Authorization ヘッダーから抽出されたユーザー名およびパスワード) を、Sun Access Manager のデータベースにあるユーザーの資格情報と照合して認証します。

Sun Access Manager による認証を使用する前に、バインディングコンポーネントの追加設定を行なって、HTTP SOAP BC で Access Manager を使用するように設定する必要があります。この設定の名前は「Sun Access Manager 設定ディレクトリ」で、値は Sun Access Manager の AMConfig.properties ファイルが置かれているディレクトリです。

    「Sun Access Manager 設定ディレクトリ」を設定するには、次の手順を実行します。

  1. NetBeans の「サービス」ウィンドウから「HTTP バインディングコンポーネントのプロパティー」にアクセスします。「サーバー」>「GlassFish·V2」>「JBI」>「バインディングコンポーネント」の下の sun-http-binding を右クリックし、ポップアップメニューから「プロパティー」を選択します。

  2. 「Sun Access Manager 設定ディレクトリ」プロパティーを設定して、Sun Access Manager の AMConfig.properties ファイルの場所を指定します。

次のサンプル WSDL には、AccessManager を使用するためのポリシーとその参照が含まれています。


<wsdl:service name="echoService">
    <wsdl:port name="echoPort" binding="tns:echoBinding">
        <soap:address location="http://pponnala-tecra-xp.stc.com:18181/
         echoService/echoPort"/>
        <wsp:PolicyReference URI="#HttpBasicAuthBindingBindingPolicy"/>
    </wsdl:port>
</wsdl:service>

<wsp:Policy wsu:Id="HttpBasicAuthBindingBindingPolicy">
    <mysp:MustSupportBasicAuthentication on="true">
        <mysp:BasicAuthenticationDetail>
           <mysp:AccessManager/>
        </mysp:BasicAuthenticationDetail>
    </mysp:MustSupportBasicAuthentication>
</wsp:Policy>

注 –

上記のコードは読みやすいように折り返されています。


Sun Java System Access Manager を使用してサービスのクライアントとサーバー間の通信をセキュリティーで保護する方法を示すチュートリアルは、Securing Communications in OpenESB with Sun Access Manager で参照できます。

Realm

Realm 要素を使用するには、Sun レルムセキュリティーを使用して HTTP クライアントの資格情報を認証するようにコンシューマエンドポイントを設定します。Realm 要素を使用する場合は、Sun レルムセキュリティーを使用して HTTP クライアントの資格情報を認証するようにコンシューマエンドポイントを設定します。HTTP SOAP バインディングコンポーネントは Sun レルムセキュリティーと統合され、HTTP クライアントの資格情報 (HTTP Authorization ヘッダーから抽出されたユーザー名およびパスワード) を、指定された Realm 内のユーザーの資格情報と照合して認証します。

レルムの名前は、Realm 要素の realmName という属性で指定されます。たとえば、GlassFish のインストールには事前設定済みの file レルムが含まれています。これは基本的に、ファイルベースのユーザーデータベースです。ユーザーを作成してレルムに追加する方法については、 GlassFish documentation on Realm security を参照してください。file レルムを例にとって、Realm を使用するためのポリシーとその参照を含んだサンプル WSDL を次に示します。

次のサンプル WSDL には、Realm を使用するためのポリシーとその参照が含まれています。


<wsdl:service name="echoService">
   <wsdl:port name="echoPort" binding="tns:echoBinding">
        <soap:address location="http://pponnala-tecra-xp.stc.com:18181/
         echoService/echoPort"/>
        <wsp:PolicyReference URI="#HttpBasicAuthBindingBindingPolicy"/>
    </wsdl:port>
</wsdl:service>

<wsp:Policy wsu:Id="HttpBasicAuthBindingBindingPolicy">
    <mysp:MustSupportBasicAuthentication on="true">
        <mysp:BasicAuthenticationDetail>
           <mysp:Realm realmName="file"/>
        </mysp:BasicAuthenticationDetail>
    </mysp:MustSupportBasicAuthenti</wsp:Policy>