我们在项目中使用customBinding,我想在代码中设置它仅传输安全性,这应该等效于XML如下:
<security mode="Transport" />
我搜索了很多,但我找不到该怎么做,因为我的CustomBinding
类扩展System.ServiceModel.Channels.Binding
所以没有字段安全性。
此外,我正在寻找与以下xml等效的代码:
<message algorithmSuite="Basic128/Basic192/Basic256/Basic128Rsa15/Basic256Rsa15/TripleDes/TripleDesRsa15/Basic128Sha256/Basic192Sha256/TripleDesSha256/Basic128Sha256Rsa15/Basic192Sha256Rsa15/Basic256Sha256Rsa15/TripleDesSha256Rsa15"
clientCredentialType="Certificate/IssuedToken/None/UserName/Windows"
establishSecurityContext="Boolean"
negotiateServiceCredential="Boolean" />
例如,您需要使用httpsTransport
<httpsTransport authenticationScheme="Basic" manualAddressing="true" maxReceivedMessageSize="524288000" transferMode="Streamed" />
更多信息查看
对于自定义绑定中的传输安全模式,我们通常使用 HttpsTransport 部分进行配置。
对于消息安全性,它由安全性部分实现。
请参考以下配置。
<customBinding>
<binding name="wss-username-binary">
<transactionFlow/>
<security
authenticationMode="SecureConversation"
messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10">
<secureConversationBootstrap
authenticationMode="UserNameForSslNegotiated"
messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10" />
</security>
<binaryMessageEncoding />
<httpsTransport/>
</binding>
</customBinding>
有关 WCF 中的身份验证模式,请参阅以下文档。
https://learn.microsoft.com/en-us/dotnet/framework/wcf/feature-details/securitybindingelement-authentication-modes 如果有什么我可以帮忙的,请随时告诉我。
更新。
//Under the WCF service created by the below binding, server provides a certificate to ensure the message security, and the client provides a username/password to represent an identity
var b = SecurityBindingElement.CreateUserNameForCertificateBindingElement();
TextMessageEncodingBindingElement encoding = new TextMessageEncodingBindingElement();
HttpsTransportBindingElement transport = new HttpsTransportBindingElement();
CustomBinding binding = new CustomBinding(b, encoding, transport);