gpt4 book ai didi

c# - 如何使用 WCF 在 WSSE 安全 header 中设置密码类型 "PasswordText"

转载 作者:行者123 更新时间:2023-11-30 17:43:15 25 4
gpt4 key购买 nike

我想要一个 wsse 安全 header ,其中密码类型设置为“PasswordText”,如以下 SOAP 片段所示:

<wsse:UsernameToken wsu:Id="UsernameToken-2">
<wsse:UsernaWme>usrnm</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">pwd</wsse:Password>
</wsse:UsernameToken>

但我得到的只是一个没有 Type 属性的简单密码标签。

<wsse:UsernameToken u:Id="UsernameToken-2">
<wsse:Username>usrnm</wsse:Username>
<wsse:Password>pwd</wsse:Password>
</wsse:UsernameToken>

在代码或 app.cfg 中指定它的正确方法是什么?到目前为止,这是我的代码:

service.ClientCredentials.UserName.UserName = "usrnm";
service.ClientCredentials.UserName.Password = "pwd";

var securityElement = SecurityBindingElement.CreateUserNameOverTransportBindingElement();
securityElement.AllowInsecureTransport = true;

var encodingElement = new TextMessageEncodingBindingElement(MessageVersion.Soap11, Encoding.UTF8);
var transportElement = new HttpTransportBindingElement();

var binding = new CustomBinding(securityElement, encodingElement, transportElement);
service.Endpoint.Binding = binding;

最佳答案

也许这会帮助像我一样在搜索中找到它的其他人。我通过更改 MessageSecurityVersion 解决了这个问题。

在 app.config 自定义绑定(bind)中:

<security authenticationMode="UserNameOverTransport" 
messageSecurityVersion="WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10" />

在 C# 中:

var securityElement = SecurityBindingElement.CreateUserNameOverTransportBindingElement();
securityElement.MessageSecurityVersion = MessageSecurityVersion.WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10;

关于c# - 如何使用 WCF 在 WSSE 安全 header 中设置密码类型 "PasswordText",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31200908/

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