gpt4 book ai didi

c# - 添加 SOAP :HEADER username and password with WSE 3. 0

转载 作者:太空狗 更新时间:2023-10-29 18:05:02 27 4
gpt4 key购买 nike

我已经成功创建了一个在不使用身份验证时可以正常工作的 WS 客户端。

但是,服务器 (WebSphere) 现在需要添加一个 ws-security 用户名 token ,我很难做到这一点。生成的 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,但到目前为止我还没有启动和运行任何东西。

任何提示将不胜感激,因为我似乎无法在网上找到任何好的食谱。

谢谢!

最佳答案

确保您的代理类继承自 Microsoft.Web.Services3.WebServicesClientProtocol

您可以通过更改代理类本身或使用 wsewsdl3.exe 通过命令行生成它来实现此目的使用 /type:webClient 开关。

然后您可以像这样传递凭据:

using Microsoft.Web.Services3;
using Microsoft.Web.Services3.Security.Tokens;
using Microsoft.Web.Services3.Security;
.
.
.
WS.FooResultHttpService ws = new WS.FooResultHttpService();
ws.RequestSoapContext.Security.Tokens.Add(new UsernameToken("blah", "blah", PasswordOption.SendPlainText));

这就是我过去为在 Studio 2008 中运行 WSE3.0 所做的工作。希望对您有所帮助。

关于c# - 添加 SOAP :HEADER username and password with WSE 3. 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2139190/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com