具有双因素身份验证和BizTalk的WCF web服务
从我们所从事的一个项目开始,我一直假设我们能够构建一个WCF web服务,该服务使用传输级别的客户端证书和消息级别的用户名密码,在WS-Security之后使用双因素身份验证。我们的计划是实现我们已经完成的消息级身份验证,并在我们能够实现自己的证书颁发机构后添加客户端证书的要求 消息级身份验证已经运行了一段时间,现在我们可以开始实现客户端证书了。我们已经生成了一个客户端证书,我们正在尝试在BizTalk中设置它,它只允许我们选择客户端证书或用户名。安全模式包括无、传输、消息、带有消息凭据的传输以及仅传输凭据。我选择带有消息凭据的传输,因为这似乎与我所追求的最接近,但是传输安全选项被禁用 是否可以同时利用客户端证书和用户名/密码具有双因素身份验证和BizTalk的WCF web服务,wcf,biztalk,wcf-security,biztalk-2010,Wcf,Biztalk,Wcf Security,Biztalk 2010,从我们所从事的一个项目开始,我一直假设我们能够构建一个WCF web服务,该服务使用传输级别的客户端证书和消息级别的用户名密码,在WS-Security之后使用双因素身份验证。我们的计划是实现我们已经完成的消息级身份验证,并在我们能够实现自己的证书颁发机构后添加客户端证书的要求 消息级身份验证已经运行了一段时间,现在我们可以开始实现客户端证书了。我们已经生成了一个客户端证书,我们正在尝试在BizTalk中设置它,它只允许我们选择客户端证书或用户名。安全模式包括无、传输、消息、带有消息凭据的传输以
客户端证书可以应用于使用WCF BasicHttp适配器的发送端口的端点标识,这是安全性的传输层(客户端证书)。然后在包含的屏幕截图中显示的安全选项卡中,提供消息层安全性,即用户名/密码组合 这是身份配置的屏幕截图。您需要填写顶部(服务标识)和底部部分(客户标识) 编辑:此答案不正确,我的设置错误,它“起作用”,但不是因为这个原因
我将添加另一个答案,只是为了保留这个问题中不起作用的内容的历史记录 尽管如此,我最终还是通过定制绑定实现了它。这次我已经三次检查了IIS是否需要客户端证书:) 它涉及到在一个BizTalk应用程序的接收位置和另一个BizTalk应用程序的发送端口上创建自定义绑定,为什么?因为我们的项目涉及一个Biztalk应用程序发送到另一个Biztalk应用程序 因此,为了让这一切顺利进行,我必须: 接收位置(接收应用程序)
- 使用Visual Studio中的WCF发布向导,使用“WCF CustomIsolated”重新发布接收应用程序。我希望有一个新的开始,并希望让BizTalk/Visual Studio完成他们的工作,而不是猜测
- 我在BizTalk管理控制台中编辑了接收位置
- 将textMessageEncoding messageVersion属性设置为Soap11,因为我们一直在使用它
- 删除了
绑定元素,因为如果不这样做,就无法添加所需的httpTransport
元素httpTransport
- 添加了
元素。在这一点上,看起来是这样的(元素的顺序很重要)安全性
元素有一个名为security
的属性,该属性已切换到UserNameOverTransport。不管名称如何,这是允许用户名与消息一起发送的原因。authenticationMode
中的所有其他内容都保留了默认值security
有一个名为httpsTransport
的属性,该属性设置为“true”,其他所有属性都保留默认值requireClientCertificate
- 然后添加了我们需要的行为,这非常简单,之后,接收位置就完成了
- 在Binding选项卡上,我重复为Receive位置概述的确切步骤
- 行为选项卡我添加了名为
的行为扩展,并在ClientCertificate元素中设置了以下值,这些值仅获取当前用户存储中的客户端证书,该证书用于发送端口作为运行的服务帐户clientCredentials
- 凭据选项卡我输入了以前在WCF BasicHttp适配器发送端口的安全选项卡中输入的用户名凭据
编辑-奖励如果您最终导出/部署到另一台服务器,即使您单独导出和导入/安装Web目录,也可能会收到一个IIS,说它找不到MyService/MyService.svc的端点,认为接收端口/位置已禁用。然而,这是因为它现在是一个WCF。解决方案:打开已发布服务的.svc文件,并将
Factory
属性从BasicHttpWebServiceHostFactory
更改为CustomWebServiceHostFactory
,我认为您必须创建一个自定义行为来实现这一点。请参阅此处的一篇文章(非BizTalk),该文章介绍了双层身份验证,这可能有助于我仍在努力实现这一点。在非Biztalk环境中,您的注释有效。基本上可以归结为使用customBinding配置接收位置,如下所示:但是,BizTalk的customBinding配置现在没有httpsTransport
Binding元素扩展,您如何让BizTalk端口允许绑定元素扩展,这是使其正常工作的关键?您能解释为什么吗