经过大量的研究,并通过WCF跟踪,并联系微软,我得到了这个问题的底部。
使用消息级别安全性时,WCF会发出问题 的 安全上下文令牌 强> 基于身份验证(SCT)
这种类型的身份验证只依赖于粘性会话,没有办法解决它。
有一个设置应该禁用它EstablishSecurityContext = false,但这不起作用。设置完之后,我可以看到SCT的使用方式与以前一样(我在微软有人确认我在这里没有做任何异常)。可能还有另一个依赖于此设置,但一位资深的MS工程师不知道为什么这个设置也不起作用。
这留下了一些选择
一个。使用Kerberos的“一次性”调用 - 我没有探索这个,因为在我的场景中打开kerberos会是一个更大的头痛
湾使用基于NTLM的auth自定义绑定 - 我试过这个,但SCT仍在使用,所以它对我不起作用
C。使用联合安全性与自定义令牌发布服务。这样可以更好地控制令牌的发布方式,但是不必要(在我的情况下)必须管理它的开销
的 d。使用基本的http绑定与TransportCredentialOnly安全模式。 强> 这很好,因为它会停止SCT协商,同时仍然传递一个Windows凭证。
4.d对我来说最简单,因为除了配置之外我不需要做很多改动。我放弃了wshttpbinding功能,但到目前为止这是可以的,因为这个对话发生在一个受信任的网络中。