Focus on biztalk -- chnking

心无旁骛,专注于biztalk......

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

一、 问题提出

在BizTalk应用集成项目中,BizTalk集成了多个应用系统,在BizTalk应用里很可能会出现有多个(甚至很多)端口指向同一个应用(这个应用可能是SAP系统,也可能是一个SQL Server的数据库),类似这样:

clip_image002[4]

在每个端口的设置中都需要设置用户凭据,如果是SQL Server的话,就是SQL的用户名和密码:

clip_image004[4]

一般使用中都是对每个端口分别就行设置,分别设置每个端口的用户凭据,输入用户名和密码。

如果端口不多的情况下,这么做也很正常,但是如果针对某一个系统的端口比较的的时候,比如连接到外部一个SQL Server数据库的端口有几十个,那么每个端口都需要输入一遍同样的用户名密码将是很麻烦的事情。

二、 解决方案

针对这样的情况,有个很好的解决方案。BizTalk本来就依赖也ESSO(Enterprise Single sign-on)服务,用来保存物理端口的配置参数,而ESSO具有用户映射的功能,即把Windows的用户映射为外部用户。

每个BizTalk的物理端口都会运行在某个BizTalk的主机实例下,而每个BizTalk的主机实例都是一个Windows服务,由一个Windows账户启动。所以我们只需要把运行这些端口主机实例的那个Windows账号统一映射为某一个账户就可以实现统一设置了。

下面是具体步骤:

1、 建立SSO关联应用

在ESSO中建立关联应用,针对需要映射用户的外部系统在SSO中建立关联应用,比如BizTalk需要跟外部一个TestApp的应用连接,并且有很多端口指向这个系统,而这个系统暴露给BizTalk的是个Sql server数据库。

打开SSO Administration,新建一个关联应用:

clip_image006[4]

创建一个叫TestApp的关联应用,一路默认设置:

clip_image008[4]

clip_image010[4]

clip_image012[4]

clip_image014[4]

2、 新建用户映射

在新建的关联应用中,新建一个用户映射:

clip_image016[4]

选择需要映射的Windows账户,这个账户是运行这个应用对应那些端口的BizTalk主机实例的那个Windows账户,必须是域账户。外部用户就是TestApp的Sql server数据库给BizTalk系统提供的访问数据的用户:

clip_image018[4]

为数据库用户设置密码:

clip_image020[4]

用户映射建立后:

clip_image022[4]

可以看出,在TestApp应用中,sql2008这个域用户映射到外部SQL数据库的gkj这个用户,用户的密码也保存在ESSO数据库中。

3、 端口中设置

先查看主机实例,BizTalkServerApplication主机实例的启动用户为cmict\sql2008,即为前面ESSO中设置的用户映射的那个Windows域用户。

clip_image024[4]

再看一个连接TestApp的sql端口的设置,注意主机实例为BizTalkServerApplication,说明此端口对应的Windows的用户就是cmict\sql2008:

clip_image026[4]

端口配置,在WCF-SQL端口的属性中,凭据标签,选择“使用单一登录”,关联应用选择TestApp即可:

clip_image028[4]

在TestApp已经设置cmict\sql2008映射到外部用户gkj,并保存了密码,所以BizTalk根据这里的设置会到ESSO数据库中查到gkj用户和密码,作为用户凭据访问外部数据库。

所有连接TestApp应用数据库的端口,用户凭据的设置都可以选择使用ESSO凭据,指向TestApp即可,无需给每个连接TestApp应用数据库的端口分别设置用户名和密码。

posted on 2013-03-12 15:02  chnking  阅读(1354)  评论(0编辑  收藏  举报