ポリシーを使用したWebサービスの開発の流れを次に示します。
図3-3 ポリシーを使用したWebサービスの開発
Webサービスセキュリティ機能では,次のポリシー記述をサポートしています。
表3-6 サポートしているポリシー記述と格納先ディレクトリ
ポリシー記述 | 説明 | 格納先 |
---|---|---|
SignaturePolicy.wsdl | リクエストメッセージおよびレスポンスメッセージの両方に対して,X.509証明書を使用した署名付与/検証機能を使用できます。 | <Application Serverのインストールディレクトリ>/wss/policies/signature/ |
EncryptionPolicy.wsdl | リクエストメッセージおよびレスポンスメッセージの両方に対して,共通鍵暗号AES-128を使用した暗号化/復号化機能を使用できます。 | <Application Serverのインストールディレクトリ>/wss/policies/encryption/ |
AuthenticationPolicy.wsdl | ユーザー名およびダイジェスト形式のパスワードを設定したUsernameToken要素をリクエストメッセージに付与し,通信先にセキュリティトークンを渡すことによって,認証機能が使用できます。 | <Application Serverのインストールディレクトリ>/wss/policies/authentication/ |
Webサービスセキュリティ機能は,これらのポリシー記述をテンプレートとして提供しています。テンプレートの中から必要なポリシー記述を一つだけ選択してコピーし,wsdl:import要素を使用してWSDLファイルにポリシー記述をインポートしてください。インポート例を次に示します。
<wsdl:definitions ・・・>
<wsdl:import
namespace="http://cosminexus.com/wss/policy/signature"
location="SignaturePolicy.wsdl"/>
・・・
</wsdl:definitions>
次に,Webサービスセキュリティ機能がサポートしているポリシー記述に含まれるアサーションを示します。
表3-7 アサーション一覧
ポリシー記述 | アサーション種別 | アサーション名 (wsp:Policy要素のName属性) |
---|---|---|
SignaturePolicy.wsdl | セキュリティバインディング | http://cosminexus.com/wss/policy/signature#SignaturePolicy |
リクエストメッセージのプロテクション | http://cosminexus.com/wss/policy/signature#SignedInputMessagePolicy | |
レスポンスメッセージのプロテクション | http://cosminexus.com/wss/policy/signature#SignedOutputMessagePolicy | |
EncryptionPolicy.wsdl | セキュリティバインディング | http://cosminexus.com/wss/policy/encryption#EncryptionPolicy |
リクエストメッセージのプロテクション | http://cosminexus.com/wss/policy/encryption#EncryptedInputMessagePolicy | |
レスポンスメッセージのプロテクション | http://cosminexus.com/wss/policy/encryption#EncryptedOutputMessagePolicy | |
AuthenticationPolicy.wsdl | サポーティングトークン | http://cosminexus.com/wss/policy/authentication#AuthenticationPolicy |
ポリシーを利用するには,wsp:PolicyReference要素を使用してWSDLファイルにポリシー参照の記述を追加し,ポリシー記述のアサーションとWSDLの要素とを関連づける必要があります。
wsp:PolicyReference要素は,次の形式で記述します。
<wsp:PolicyReference URI="参照するアサーション名"/>
アサーション名には,wsp:Policy要素のName属性を指定します。アサーション名(wsp:Policy要素のName属性)の詳細は,表3-7を参照してください。
ポリシー記述に含まれるアサーションは,すべてWSDLの要素から参照される必要があります。wsp:PolicyReference要素を使用した場合に,アサーションを参照するWSDLの要素は次のとおりです。
表3-8 アサーションを参照するWSDLの要素
WSDLの要素 | 参照できるアサーションの種別 |
---|---|
/wsdl:definitions/wsdl:binding |
|
/wsdl:definitions/wsdl:binding/wsdl:operation/wsdl:input | リクエストメッセージのプロテクション |
/wsdl:definitions/wsdl:binding/wsdl:operation/wsdl:output | レスポンスメッセージのプロテクション |
ポリシー参照の例を次に示します。
<wsdl:definitions
xmlns:wsp="http://www.w3.org/ns/ws-policy/"
・・・>
<wsdl:import
namespace="http://cosminexus.com/wss/policy/signature"
location="SignaturePolicy.wsdl"/>
<wsdl:types>・・・</wsdl:types>
<wsdl:message ・・・>・・・</wsdl:message>
・・・
<wsdl:portType ・・・>・・・</wsdl:portType>
<!-- バインディング -->
<wsdl:binding ・・・>
<wsp:PolicyReference URI="http://cosminexus.com/wss/policy/signature#SignaturePolicy"/>
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<!-- オペレーション -->
<wsdl:operation ・・・>
<soap:operation/>
<!-- リクエストメッセージ -->
<wsdl:input>
<wsp:PolicyReference URI="http://cosminexus.com/wss/policy/signature#SignedInputMessagePolicy"/>
<soap:body use="literal"/>
</wsdl:input>
<!-- レスポンスメッセージ -->
<wsdl:output>
<wsp:PolicyReference URI="http://cosminexus.com/wss/policy/signature#SignedOutputMessagePolicy"/>
<soap:body use="literal"/>
</wsdl:output>
・・・
</wsdl:operation>
</wsdl:binding>
<wsdl:service ・・・>・・・</wsdl:service>
</wsdl:definitions>