gpt4 book ai didi

c# - 如何将 header 中的用户名/密码传递给 SOAP WCF 服务

转载 作者:IT王子 更新时间:2023-10-29 04:28:12 28 4
gpt4 key购买 nike

我正在尝试使用第三方网络服务 https://staging.identitymanagement.lexisnexis.com/identity-proofing/services/identityProofingServiceWS/v2?wsdl

我已经将其添加为服务引用,但我不确定如何传递 header 的凭据。

如何使 header 请求匹配这种格式?

<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-49" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username>12345/userID</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/ oasis-200401-wss-username-token-profile-1.0#PasswordText">password123</wsse:Password>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">d+VxCZX1cH/ieMkKEr/ofA==</wsse:Nonce>
<wsu:Created>2012-08-04T20:25:04.038Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>

最佳答案

以上答案大错特错!不要添加自定义 header 。从您的示例 xml 来看,它是一个标准的 WS-Security header 。 WCF 绝对支持开箱即用。添加服务引用时,您应该在配置文件中为您创建 basicHttpBinding 绑定(bind)。您必须修改它以包含模式为 TransportWithMessageCredential 的安全元素和 clientCredentialType = UserName 的消息元素:

<basicHttpBinding>
<binding name="usernameHttps">
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName"/>
</security>
</binding>
</basicHttpBinding>

上面的配置告诉 WCF 通过 HTTPS 期望 SOAP header 中的用户标识/密码。然后你可以在调用之前在你的代码中设置 id/password:

var service = new MyServiceClient();
service.ClientCredentials.UserName.UserName = "username";
service.ClientCredentials.UserName.Password = "password";

除非这个特定的服务提供商偏离了标准,否则它应该可以工作。

关于c# - 如何将 header 中的用户名/密码传递给 SOAP WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16028014/

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