【发布时间】:2014-02-20 07:25:58
【问题描述】:
我有一个正在运行的 BizTalk 应用程序,该应用程序当前正在使用 WCF-BasicHttp 适配器。它目前仅使用使用 UserName 凭据类型的消息安全性,并且一切正常。
此后情况发生了变化,我们现在需要在传输 (IIS) 级别接受客户端证书以对服务进行授权,并且仍继续使用消息安全性来对服务进行身份验证。
经过大量的痛苦和搜索,我能够根据我的 this post 的位配置使其在非 BizTalk WCF 环境中工作,并最终得到以下 customBinding 配置:
<customBinding>
<binding name="CustomCDARequestEndpointBinding">
<textMessageEncoding messageVersion="Soap11" />
<security authenticationMode="UserNameOverTransport" />
<httpsTransport requireClientCertificate="true" />
</binding>
</customBinding>
这导致 WCF 客户端配置如下:
<customBinding>
<binding name="CDARequestEndpoint">
<security defaultAlgorithmSuite="Default" authenticationMode="UserNameOverTransport"
requireDerivedKeys="true" includeTimestamp="true" messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10">
<localClientSettings detectReplays="false" />
<localServiceSettings detectReplays="false" />
</security>
<textMessageEncoding messageVersion="Soap11" />
<httpsTransport requireClientCertificate="true" />
</binding>
</customBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="ohBehave">
<clientCredentials useIdentityConfiguration="false">
<clientCertificate findValue="6D0DBF387484B25A16D0E3E53DBB178A366DA954" storeLocation="CurrentUser"
x509FindType="FindByThumbprint" />
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
这在非 BizTalk 环境中工作得非常好,而且由于 requreClientCertificate 属性,它似乎是配置的关键部分是 <httpsTransport requireClientCertificate="true" /> 配置元素。问题是,无论我尝试什么,我都无法在任何地方的 BizTalk WCF-Custom/customBinding 配置中找到类似的设置。我无法添加 <httpsTransport> 绑定元素扩展,因为它在 BizTalk 中不作为 on 选项存在
有人知道我的选择吗?
- 我可以直接编辑 web.config 吗?
- 是否可以添加另一个扩展来在 BizTalk GUI 中实现相同的效果?
- 我可以在编排中编写代码以按照我建议的方式手动设置此接收位置吗?
【问题讨论】:
标签: c# wcf biztalk wcf-binding