【问题标题】:Add WSSE SOAP Header to Web Reference将 WSSE SOAP 标头添加到 Web 参考
【发布时间】:2013-01-29 22:42:58
【问题描述】:

我正在尝试将 WSSE SOAP 标头添加到我的服务调用中,但大多数示例都集中在 WCF 上。我没有使用 WCF。我添加了一个 Web 参考 (WSDL)。

我尝试了各种方法都没有成功,比如 - 覆盖 GetWebRequest 方法:

    protected override System.Net.WebRequest GetWebRequest(Uri uri)
    {
        string user = "username";
        string pwd = "password";

        System.Net.WebRequest request = base.GetWebRequest(uri);

        string auth = string.Format("Basic {0}", Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(string.Format("{0}:{1}", user, pwd))));
        request.PreAuthenticate = true;
        request.AuthenticationLevel = System.Net.Security.AuthenticationLevel.MutualAuthRequested;
        request.Headers.Add(HttpRequestHeader.Authorization, auth);

        return request;
    }

WSSE 安全标头应类似于以下内容:

<Security xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
         <UsernameToken>
            <Username>username</Username>
            <Password>password</Password>
         </UsernameToken>
      </Security>

提前非常感谢! 亲切的问候,

【问题讨论】:

    标签: c#-4.0 soap web-reference


    【解决方案1】:

    【讨论】:

    • 这不应该是评论吗??
    • 您的回复是救命稻草!谢谢你:)
    • 您的第一个链接已损坏。
    • 第二个链接现在也坏了:'(
    【解决方案2】:

    尝试添加评论,但太长了...

    第二个链接还可以吗?无论如何,这里不是链接,而是我认为的关键信息(以防链接消失) - 将 System.Web.Services.Protocols.SoapHttpClientProtocol 的引用替换为 Microsoft.Web.Services2.WebServicesClientProtocol (或 Microsoft.Web. Services3.WebServicesClientProtocol,如果这对你有用 - 我通过 nuget 找到了 services2)。我们需要更改类,因为 SoapHttpClientProtocol 中的请求方法是受保护的,因此很难(不可能?)调整任何请求细节。如果您使用 WCF 生成代码,我假设更改类会为您提供所有可能性。如果您要添加用户名,那么您可能需要添加所有其他 SOAP 安全值,因此Correct way communicate WSSE Usernametoken for SOAP webservice 是一个方便的参考。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-09
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      • 1970-01-01
      • 2011-08-09
      相关资源
      最近更新 更多