認証を使用しない場合に正しく動作する WS クライアントを正常に作成しました。
ただし、サーバー (WebSphere) には ws-security ユーザー名トークンを追加する必要があり、これを行うのに苦労しています。結果の SOAP メッセージは次のようになります。
<soapenv:Envelope
xmlns:ns="http://foo.bar/1.0"
xmlns:ns1="http://www.witsml.org/schemas/140"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-2" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username>foo</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">bar</wsse:Password>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">foooooobar==</wsse:Nonce>
<wsu:Created>2010-01-25T13:09:24.860Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<ns:fooBar>...</ns:fooBar>
</soapenv:Body>
Microsoft の WSE 3.0 SDK をダウンロードしてインストールし、Visual Studio 2005 プロジェクトに DLL への参照を追加しました。
Microsoft.Web.Services3.* 名前空間にアクセスできるようになりましたが、現在、どうすればよいか困っています。
クライアント コードは Web 参照によって自動的に生成されているため、認証されていないサーバーにメッセージを送信するためのわずかな作業のみを行います。
WS.FooResultHttpService ws = new WS.FooResultHttpService();
ws.Url = "http://foo.bar.baz";
ws.SendSomething(message);
を使用して調査を開始したばかりですMicrosoft.Web.Services3.Security.Tokens.UsernameTokenManager
が、これまでのところ何も起動して実行できていません。
ネット上で良いレシピが見つからないようなので、ヒントをいただければ幸いです。
ありがとう!