在前面技术文章分析JMS订阅服务,在JMS-Server上面的Log日志发现了 BEA-110412错误,发现了JMS订阅端出现事务回滚,但是根据110412错误没有搜索到关键的有价值的信息,而对于订阅端我们发现了BEA-010026错误,提升事务处理超时,而根据这个错误,一篇文章专门指出了和Weblogic域安全有关系。
在网上一篇文章给出了具体的跨越安全性设置的三种方法的文章,其中提到了三种方法,一种是在所有的Domain域启用全局Domain信任机制,一种是启用跨越安全信任机制,还有一种就是将安全互操作性修改为性能模式,因为对于性能模式下是允许进行匿名访问的。
在前面的技术分析中,一直没有去关注全局信任和跨域信任的关系,以为这两个是同样一回事,但是昨天又上网搜索了下,发现两种的区别。不仅仅是两种方法的设置不同,其次是两种方法本身的含义也有差别。核心的差别点可以描述为:
全局信任: 如果A和B进行设置,B和C进行设置,那么A,B,C三者之间是完全相互信任的。
跨越信任: 如果A和B进行了设置,而B和C进行了设置,那么A和C之间仍然不通,即信任关系不传递。
You have three options and your should decide which one is best depending on your non-functional requirements (e.g. security etc):
对于这三种方法重新进行说明如下。
基于全局信任模式的设置:
注意对于这种全局模式,只需要在所有域里面,进入到域-》安全选项卡,打开隐藏的高级部分的内容。在安全互操作模式下有一个身份证明和确认身份证明。
这个在所有的域设置一个统一的类似Token的密码值,即可,只要不同的域设置为相同的值。
基于跨越安全信任的设置:
对于这种设置相对来说比较,复杂。在百度文库里面可以下载到《weblogic域信任设置.doc》文档,里面有详细的操作方法说明,具体核心的步骤包括了:
1. 在域-安全里面,首先选择启用跨越安全checkbox选项。
2. 进入域结构-安全领域,列表中有一个myrealm默认安全领域,点击进入
2.1 进入到用户和组,新建立一个用户Cross,设置密码
2.2 将该用户加入到 CrossDomainConnectors组里面
3. 建立身份证明映射,进入到身份证明映射Tab页,点击新建
3.2 选择使用跨越协议CheckBox选项
3.1 点击新建,选择远程域的名字,同时选择在远程域创建的用户名和密码
重启该Domain服务,并且在另外一个域做完全相同的设置。可以在两个域都设置相同的用户名和密码,以免设置的和配置的时候发生不一致。
基于安全互操作性的设置
按搜索到的网页设置方法,这种设置完全不需要启用跨越安全信任,也不需要去设置身份证明密码信息,而只需要将安全互操作性下拉列表处修改为性能模式。对于性能模式Weblogic解释为:
事务处理协调器以内核身份通过不安全通道进行调用。这是一个较高的安全风险,因为成功的中间人攻击会使攻击者获取对两个域的管理控制。此设置应该仅在强网络安全就位时使用。
下面再摘录下往上关于全局信任和跨越信任的一个对比:
Global Trust VS Cross Domain Security
1. Global Trust is transitive and symmetric i.e. If there is global trust between WebLogic Domain A & B, and there is Global Trust between webLogic Domain B & C then there will be trust between Domain A & C. In cross domain security, if there is trust between A & B and B & C then there will not trust configured between A & C automatically.
2. The domain name involved in Cross Domain Security must be unique
3. Global Trust can be used for all type of sub systems like RMI, EJB, JMS, JTA, MDB, and WAN where as Cross Domain Security can’t be used for RMI or EJBs (you can use cross domain security or global trust for JMS, JTA, MDB or WAN)
4. Global Trust between WebLogic domains has the potential to open the servers up to man-in-the-middle attacks. You must use firewalls or dedicated network channels to restrict access in WebLogic Domains (with Global Trust configured)