WebServicesClientProtocolAddsEncodingTypetoNonceinSecurityHeader类似问题:HowtoaddinNonceelementofUsernameTokeninWSE3.0(.NET)EncodingTypepropertyI'mtryingtomodify由WebServicesClientProtocol发送到服务的标头。不幸的是,Microsoft的WSSE用户名和令牌安全规范1.1实施不符合标准,并且不发送带有Nonce的EncodingType。在我在顶部链接的类似问题中,解决方案是在服务器上禁用EncodingType验证,但我无法修改任何内容。我已将WSDL作为Web参考导入,我已将基类更改为WebServicesClientProtocol,然后在我的代码中执行以下操作:varclient=newQueryClient();SoapContextrequestContext=client.RequestSoapContext;requestContext.Security.Timestamp.TtlInSeconds=60;varuserToken=newUsernameToken(_userName,_password,PasswordOption.SendHashed);requestContext.Security.Tokens.Add(userToken);X509SecurityTokensignatureToken=GetSecurityToken();requestContext.Security.Tokens.Add(signature=Token);消息MessageSignature(signatureToken);requestContext.Security.Elements.Add(sig);client.SetClientCredential(signatureToken);client.SetClientCredential(newUsernameToken(_userName,_password,PasswordOption.SendHashed));这创建了一个几乎理想的请求,但Nonce没有获得EncodingType:ws_test_userXrFybEBGGqAIp2ybV6BbAdGa01U=gXsJgA6vV/HwY4pew9pi9Q==2017-02-03T12:17:57ZNonce必须具有以下属性:EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary”如何添加此属性?我想避免手动创建请求,因为我必须指定用户名、密码、BinarySecurityToken和签名Microsoft.Web.Services3正在为我创建所有必需的元素,缺少的是这个属性。编辑:这是我要创建的请求:my_loginXqEwZ/CxaBfFvh487TjvN8qD63c=JzURe0CxvzRjmEcH/ndldw==2017-02-09T09:42:27.976ZMIIKnDCCB…………nmIngeg6d6TNI=ABQuBNUFOmLxxqsL.sl.XL1HEbMQjJ/Q2Rvg==27467我已将我的请求发送给服务创建者,他确认我需要的是Nonce中的EncodingType属性EncodingType标志符合WSSE用户名和令牌安全规范1.1,这就是此JavaWeb服务正在使用规范要求的ApacheCXF框架版本。.NET不符合该规范。幸运的是,CXF中有一个标志可以关闭此要求。我们做到了,现在可以交流了。以上是C#学习教程:WebServicesClientProtocol在securityheader中为Nonce添加EncodingType,共享所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收集,不代表侵权,请点击右边联系管理员删除。如需转载请注明出处:
