演练:对 WCF-NetTcp 适配器使用消息安全模式
注意
有关适配器的详细信息,请参阅 BizTalk Server 中的适配器。
简介
本演练演示如何将 WCF-NetTcp 适配器配置为使用 Windows Communication Foundation (WCF) 消息安全模式,该模式使用 WS-Security 规范来帮助保护适配器传输的消息。 此规范描述 SOAP 邮件协议的增强功能,以实现机密性、完整性,以及在 SOAP 消息级别进行身份验证。 消息安全模式需要指定服务证书才能进行加密/解密和签名/验证等操作,具体取决于安全模式组合。
WCF-NetTcp 适配器使用 NetTcpBinding 绑定在 WCF 客户端和 WCF 远程服务之间进行通信。 它提供了对 SOAP 安全性、可靠性和事务功能的完全访问权限。 它允许将业务流程和架构发布为 WCF 服务,并为业务流程提供使用外部 WCF 服务的功能。 此适配器使用 TCP 传输,消息采用二进制编码。 WCF-NetTcp 适配器由一个发送适配器和一个接收适配器组成。
本演练显示如何使用 Active Directory 证书服务为消息安全模式创建证书。 您将为服务器和客户端创建证书,然后配置 WCF-NetTcp 接收位置以在消息安全模式下使用证书。 通过使用 WCF 客户端,可以根据 XML 加密语法和处理将消息发送到处于加密状态的接收位置。
在完成本演练后,你将了解如何执行以下任务:
使用 Active Directory 证书服务创建证书申请,并通过颁发证书完成该过程。
在 BizTalk Server 管理控制台中,将 WCF-NetTcp 适配器配置为使用消息安全模式。
必备条件
要执行此示例中的步骤,请确保您的环境安装了以下必备组件;
生成程序集并运行部署过程的计算机和运行示例的计算机都需要 Microsoft Windows Server 2008 SP2、Microsoft .NET Framework 4.5 和 Microsoft BizTalk Server。
用于构建程序集和运行部署过程的计算机需要安装 Microsoft Visual Studio。
运行示例的计算机需要 WCF 适配器和 WCF 管理工具。 这些是在安装 Microsoft BizTalk Server 期间要安装的选项。
在用于执行管理任务的计算机上,必须以BizTalk Server管理员组成员的用户帐户身份运行,才能在 BizTalk Server 管理控制台中配置BizTalk Server应用程序设置。 此用户帐户还必须是本地管理员组的成员,才能部署应用程序,管理主机实例以及其他可能需要的任务。
在需要 WCF 功能的任何计算机上,在 上完成 WCF 示例 https://go.microsoft.com/fwlink/?LinkId=135510的一次性设置过程。
在运行示例并将绑定或 .msi 文件导入BizTalk Server的计算机上,请确保主机不是受信任的主机,否则导入将失败。
在运行示例的计算机上确保已安装 Active Directory 证书服务。
必须下载演练代码并将其提取到计算机。 本演练是整个 WCF 适配器演练包的一部分。 可以从 BizTalk Server 开发人员中心https://go.microsoft.com/fwlink/?LinkId=194140下载文件WCFAdapterWalkthroughs.exe。
为本演练创建证书
在本部分中,您将请求服务和客户端证书,颁发这些证书,并将其安装到适当的存储中。 Active Directory 证书服务用于创建具有受信任证书链的证书。 如果没有将 Active Directory 证书服务作为必备组件的一部分安装,则在计算机上安装 Active Directory 证书服务。 如果已安装,则转到步骤 2。
单击“开始”、指向“管理工具”,然后单击“服务器管理器”。
在“服务器管理器”节点下,单击“添加”,然后单击“角色”。
此时会显示“添加角色向导”的“开始之前”对话框。 单击“下一步”。
在 “选择服务器角色 ”页上,选择“ Active Directory 证书服务”,单击“ 下一步”,然后按照屏幕上的说明完成安装。
创建服务验证的证书申请,如下所示:
在 Internet Explorer 中,访问网站
http://localhost/certsrv
。 在 “欢迎 ”页上,单击“ 请求证书”,然后在“ 请求证书 ”页上单击“高级 证书请求 ”。注意
使用 Windows Server 2008 SP2 作为证书颁发机构并从 Windows Server 2008 SP2 计算机请求证书时,可能会收到错误“为了完成证书注册,必须将 CA 的网站配置为使用 HTTPS 身份验证”。 如果发生此错误,则需要为注册网站配置 Web 证书 (SSL) 。 有关完成此任务的详细信息,请参阅以下链接:
在 “高级证书请求 ”页上,单击“ 创建”,并将请求提交到此 CA。
在“高级证书请求”页上,在
localhost
“名称”文本框中键入,从“所需的证书类型”下拉列表中选择“服务器身份验证证书”,然后单击“提交”。
创建客户端验证的证书申请,如下所示:
在 Internet Explorer 中,访问网站
http://localhost/certsrv
。 在 “欢迎 ”页上,单击“ 请求证书”,然后在“ 请求证书 ”页上单击“高级 证书请求 ”。在 “高级证书请求 ”页上,单击“ 创建”,并将请求提交到此 CA。
在“高级证书请求”页上的
contoso
“名称”文本框中键入 ,从“所需的证书类型”下拉列表中选择“客户端身份验证证书”,然后单击“提交”。
注意
如果在域控制器以外的计算机上运行 BizTalk Server,则使用客户端身份验证证书。 这将在适配器的属性对话框中进行配置。
使用证书颁发机构管理控制台颁发证书,如下所示:
单击“ 开始”,指向 “管理工具”,然后单击“ 证书颁发机构”。
在“证书颁发机构”管理控制台,展开证书颁发机构的名称,然后双击“挂起的请求”。
在证书颁发机构管理控制台的右窗格中,右键单击服务身份验证证书的请求,指向“所有任务”,然后单击“颁发”。
在证书颁发机构管理控制台的右窗格中,右键单击客户端身份验证证书的请求,指向“所有任务”,然后单击“颁发”。
关闭证书颁发机构管理控制台。
在您的计算机上安装颁发的证书,如下所示:
在 Internet Explorer 中,访问网站
http://localhost/certsrv
。在“欢迎”页面上,单击“查看挂起的证书申请状态”。
在 “查看挂起的证书请求的状态 ”页上,单击服务器身份验证证书。
在“ 证书颁发 ”页上,单击“ 安装此证书”。
在 Internet Explorer 中,访问网站
http://localhost/certsrv
。在“欢迎”页面上,单击“查看挂起的证书申请状态”。
在 “查看挂起的证书请求的状态 ”页上,单击客户端身份验证证书。
在“ 证书颁发 ”页上,单击“ 安装此证书”。
按如下方式确保已正确安装颁发的证书:
打开 Microsoft 管理控制台 (MMC)。 为此,请单击“ 开始”,单击“ 运行”,键入
mmc
,然后单击“ 确定”。在 MMC 的“文件”菜单上,单击“添加/删除管理单元”。
在“添加/删除管理单元”对话框中,单击“添加”。
在“添加独立管理单元”对话框中,从“可用的独立管理单元”列表中选择“证书”,然后单击“添加”。
在“ 证书管理单元 ”对话框中,选择“ 我的用户帐户 ”选项,然后单击“ 完成”。
关闭所有打开的对话框。
在 MMC 的“控制台根”窗口中,依次展开 “证书 - 当前用户”、“ 个人”和“ 证书”,并确保显示上一步中安装的证书。
为本演练创建 BizTalk 应用程序
单击“开始”,指向“所有程序”,指向“Microsoft BizTalk Server 20xx”,然后单击“BizTalk Server管理”。
在BizTalk Server管理控制台中,展开“BizTalk 组”,右键单击“应用程序”,指向“新建”,然后单击“应用程序”。
在“ 应用程序属性 ”对话框中的“ 常规 ”选项卡上,键入
WcfMessageSecurity
,然后单击“ 确定”。为 BizTalk 应用程序创建使用 WCF-NetTcp 适配器的接收位置,如下所示:
在BizTalk Server管理控制台中,展开“WcfMessageSecurity”,右键单击“接收端口”,指向“新建”,然后单击“单向接收端口”。
在“ 接收端口属性 ”对话框的“ 名称 ”文本框中,键入
WcfMessageSecurity.OrderRequest.Receive
,然后单击“ 确定”。 此接收端口的名称是任意的,但此名称具有逻辑意义。在BizTalk Server管理控制台中,右键单击“接收位置”,单击“新建”,然后单击“单向接收位置”。 WCF 客户端会将 WCF 消息发送到此接收位置。 选择 WcfMessageSecurity.OrderRequest.Receive recive 端口,然后单击“ 确定”。
在“ 接收位置属性 ”对话框的“ 名称 ”文本框中,键入
WcfMessageSecurity.OrderRequest.Receive.NetTcp
。 此接收位置的名称是任意的,但此名称具有逻辑意义。在“接收位置属性”对话框的“类型”旁边的“传输”部分中,从下拉列表中选择“WCF-NetTcp”,然后单击“配置”。
在“ WCF-NetTcp 传输属性 ”对话框的“ 常规 ”选项卡上的“ 地址 (URI) ”文本框中,键入
net.tcp://localhost/WcfMessageSecurity
。在“WCF-NetTcp 传输属性”对话框中的“安全性”选项卡上,从“安全模式”下拉列表中选择“消息”,然后从“消息客户端凭据类型”下拉列表中选择“证书”。 将配置 WCF-NetTcp 适配器以使用消息安全模式。
配置服务证书以在消息安全模式下使用。 在 “WCF-NetTcp 传输属性 ”对话框中的“ 服务认证 ”部分中,单击“ 浏览”。 在 “选择服务证书 ”对话框中,选择在上一过程中安装的服务器身份验证证书,然后单击“ 确定 ”关闭对话框并保存更改。
关闭所有打开的对话框。
注意
若要使用 WCF 接收适配器对客户端证书进行身份验证,客户端证书的 CA 证书链必须安装在运行 WCF 适配器主机实例的计算机的受信任的根证书颁发机构证书存储中。 由于本演练假设证书服务和 WCF 客户端以及 WCF 适配器安装在同一计算机上,因此,您无需在您的计算机上安装 CA 证书链。
为 BizTalk 应用程序创建 FILE 发送端口。 这是表示 WCF 服务的业务流程将发送订单请求输出消息的位置。
在BizTalk Server管理控制台中,展开“WcfMessageSecurity”,右键单击“发送端口”,指向“新建”,然后单击“静态单向发送端口”。
在“ 发送端口属性 ”对话框的“ 常规 ”选项卡上的“ 名称 ”文本框中,键入
WcfMessageSecurity.OrderRequest.Send.FILE
。在“发送端口属性”对话框的“类型”旁边的“传输”部分中,从下拉列表中选择“文件”,然后单击“配置”。
在“ 文件传输属性 ”对话框的“ 常规 ”选项卡上,键入
C:\WCFMessageSecurity\OrderRequestOut
“ 目标文件夹 ”文本框,然后单击“ 确定”。在“ 发送端口属性 ”对话框中的“ 筛选器 ”选项卡上,选择“ BTS”。ReceivePortName 作为 “属性” 字段,输入
WcfMessageSecurity.OrderRequest.Receive
作为 “值 ”字段,然后单击“ 确定”。 此筛选器表达式将来自客户端的传入 WCF 消息路由到 WcfMessageSecurity.OrderRequest.Receive 接收端口到此发送端口。
针对 BizTalk 应用程序测试 WCF 客户端
在BizTalk Server管理控制台中,右键单击“WcfMessageSecurity”,然后单击“启动”。 在“ 开始 ”对话框中,单击“ 启动”。
在BizTalk Server管理控制台中,依次展开“平台设置”、“主机实例”、右键单击 BizTalkServerApplication 或其他相应的主机实例,然后单击“重启”。
为本演练的工作文件夹创建名为 C:\WCFMessageSecurity 的文件夹。 将演练文件解压缩到此文件夹。
在 Visual Studio 中,打开 C :\WCFMessageSecurity 文件夹中的 WcfMessageSecurity.sln 文件。
在 Visual Studio 解决方案资源管理器 中,展开“WcfClient”,然后打开 Program.cs 进行查看。
客户端将消息发送到您在前面过程中创建的 WCF-NetTcp 接收位置。
客户端使用 NetTcpBinding 创建通道,然后将绑定配置为使用客户端凭据类型的证书。
客户端配置终结点行为,以便使用在前面过程中安装的客户端验证证书,从而进行客户端验证。
类 Program 实现 IClientMessageInspector 和 IEndpointBehavior 接口,以在命令提示符下显示来自此客户端的传出 WCF 消息。
在 Visual Studio 解决方案资源管理器 中,右键单击 WcfMessageSecurity 解决方案,然后单击“重新生成”。
在 Visual Studio 的“ 调试 ”菜单上,单击“ 在不调试的情况下启动 ”以运行 WcfClient 以将消息发送到 WCF-NetTcp 接收位置。 此时将出现一个命令提示符窗口,显示执行结果。
在命令提示符下,查看订单请求消息。 请注意 OrderId 字段和消息的结构。
在命令提示符下,转到
C:\WCFMessageSecurity\OrderRequestOut
文件夹,然后确保显示 WCF 客户端发送的订单请求消息。关闭命令提示符。