最近有人问我如何使用BizTalk的SSO来实现分散系统(Exchange, NNTP, SPS等)的整合。他的出发点是使用IE来访问系统的用户可能在系统上没有一一对应的帐号。我的建议是实施基于角色的安全性(Role Based Security)。一般来说,SSO只有在把AD和UNIX或大型机上的用户验证机制连接起来的时候才用得到,所以通常都是用在既有微软的AD,又有IBM的大型机的环境里。上述比较单纯的环境还是使用基于角色的安全性比较好。
在设计架构的时候,我们首先根据需求设计出方案中需要的各种角色。比如设立记者角色,用于提交文稿的权限。设立编辑角色,用于修改文稿和批准流程。然后我们可以检验现有的产品和方案,把我们定义的角色映射为现有产品和方案中几种角色的组合。如果后台服务器上支持基于角色的权限,比如SPS,我们可以把他们对应起来,如果后台服务器不支持的基于角色的安全的话,我们可以指定一些特殊的用户,通过扮演(Impersonate)的方式来取得类似的功能。然后我们把实际资源上的访问权限分配给定义的每一种角色。
具体实施时,我们可以从最前端的用户访问处得到用户信息,或者从不支持角色安全的服务器上取得用户身份,然后根据用户的身份或者其他特性,为用户映射一个角色。比如上述案例中,我们最好在Exchange服务器上得到用户身份,然后根据预先设置的条件,比如用户所属的组,用户所属的组织单元等等为用户选择一个角色。这些概念可以在BizTalk、SPS、CMS等的文档里面找到,在整合的时候可以参考.NET角色安全的程序设计范例。
发表评论