最近的项目遇到报表功能报错(rsProcessing error),用Outlook也不能连接CRM的问题。
检查SPN和防火墙设置后问题仍旧。(网上有许多SPN和防火墙配置的文章了)
最后用Fiddler检查,发现Inner Exception是SecurityTokenException。确定AD的设置无误后,就想到负载均衡的问题了。
因为有BigIP做负载均衡,默认是RoundRobin不带Session Persistence的设置。每次请求去的服务器不一样,加密后的请求只能给最初的服务器辨识,所以就报错了。通过测试,只有一台服务器的情况下报表功能和Outlook Client都能使用,于是确定了问题的所在。
解决的方法也很简单,只需要把Session Persistence打开就好了。我们需要的是Source Address Affinity。如果Source IP相同,将会让这客户端持续时间内访问相同的服务器。Timeout为0代表关闭,非0代表开启Persistence。
启用Persistence后,两个问题解决。
谢谢阅读!
Jake Zhong