WCF:在代码中将"自定义绑定"设置为"仅传输安全性"



我们在项目中使用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);

最新更新