WS-Security を実装しているが、WSDL でポリシーを定義していない Web サービスがあります。Axis 2 をクライアントとして使用して、この Web サービスを正常に使用できます。
Metro 2 を使用して同じ Web サービスを使用しようとしていますが、wsse:security ヘッダーが使用できません。サービスが私の管理下にないセキュリティポリシーを定義している場合にのみ機能します。サンプル Web サービスを作成してこれをテストしました。ポリシーを定義しない限り、メトロ クライアントは wsse:security ヘッダーを送信しません。
Metro の使用に欠けているものはありますか?
編集 - - - - - - - - - - - - - - - - - - - - - - - - - ----------------------------------------------
wsdl のローカル コピーを作成し、その中でポリシーを定義しました。この wsdl を使用して Web サービス クライアントを作成しましたが、まだセキュリティ ヘッダーが機能しません。wsit-client.xml ファイルは問題ないようです。すべての構成を、ポリシーを定義する Web サービスのクライアントと比較したところ、構成は同じですが、それでも機能しません。現時点での私の結論は、metro クライアントには実際の Web サービスでポリシーを定義する必要があるということです。
編集 - - - - - - - - - - - - - - - - - - - - - - - - - ------------------------------------------------------
wsit-client.xml の内容
<?xml version="1.0" encoding="UTF-8"?>
<definitions
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" name="mainclientconfig"
>
<import location="NewWebService.xml" namespace="http://test.com/"/>
NewWebService.xml は wsit-client.xml と一緒に配置され、次のポリシー情報が含まれています。
<wsp:Policy wsu:Id="NewWebServicePortBindingPolicy">
<wsp:ExactlyOne>
<wsp:All>
<sc:CallbackHandlerConfiguration wspp:visibility="private">
<sc:CallbackHandler default="dsfsd" name="usernameHandler"/>
<sc:CallbackHandler default="sdfsdfds" name="passwordHandler"/>
</sc:CallbackHandlerConfiguration>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
これはバインディングで次のように参照されます -
<binding name="NewWebServicePortBinding" type="tns:NewWebService">
<wsp:PolicyReference URI="#NewWebServicePortBindingPolicy"/>
変更された wsdl には次のポリシーが含まれています -
<wsp:Policy xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702" wsu:Id="NewWebServicePortBindingPolicy">
<sp:SignedEncryptedSupportingTokens>
<wsp:Policy>
<sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:WssUsernameToken10 />
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SignedEncryptedSupportingTokens>
<sp:TransportBinding>
<wsp:Policy>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic128 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:IncludeTimestamp />
<sp:Layout>
<wsp:Policy>
<sp:Lax />
</wsp:Policy>
</sp:Layout>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate="false" />
</wsp:Policy>
</sp:TransportToken>
</wsp:Policy>
</sp:TransportBinding>
<sp:Wss10 />
<wsam:Addressing wsp:Optional="true" />
</wsp:Policy>