Java 跨领域设置中基于Kerberos资源的受限委派

Java 跨领域设置中基于Kerberos资源的受限委派,java,active-directory,kerberos,kerberos-delegation,Java,Active Directory,Kerberos,Kerberos Delegation,我正在尝试使用最新的JDK 8来执行,似乎在获取S4U2Proxy调用最后一段的服务票证时遇到了问题 以下是我的设置: 启用双向林身份验证的两个microsoft AD林 ForestA:ForestA.com ForestB:ForestB.com 前端服务位于ForestA中,SPN为http/myappserver.ForestA.com ForestB中的后端服务,SPN为http/backend.ForestB.com 正在模拟的用户位于ForestB中,用户名为userB 我已经

我正在尝试使用最新的JDK 8来执行,似乎在获取S4U2Proxy调用最后一段的服务票证时遇到了问题

以下是我的设置: 启用双向林身份验证的两个microsoft AD林

  • ForestA:ForestA.com
  • ForestB:ForestB.com
  • 前端服务位于ForestA中,SPN为http/myappserver.ForestA.com
  • ForestB中的后端服务,SPN为http/backend.ForestB.com
  • 正在模拟的用户位于ForestB中,用户名为userB
我已经成功地利用了S4U2Self协议,并在ForestA中为userB检索到前端服务的服务票证。但是,当尝试使用S4U2Proxy获取ForestB中后端服务的服务票证时,请求失败,错误代码为kerberos error 12

在调查ForestB的域控制器上的事件查看器的审核日志时,它表明错误消息为0xC000019B(事件Id 4769),这似乎与某些一般信任设置问题有关

任何具有相同有效负载的进一步请求都会导致从ForestB的domainController返回Kerberos错误代码28。可能是因为缓存了以前的kerberos票证

更新:

如果前端服务和用户位于同一个林中,而后端服务位于不同的林中,则此设置工作正常


当前端服务和后端服务位于一个林中,而用户位于另一个林中时,它也可以工作。

与Microsoft讨论此事后,确认Microsoft AD by design不支持此特定情况。特别是,如果前端服务位于一个林中,而用户和资源服务位于不同的林中,则不支持此用例


希望这对将来遇到此问题的人有所帮助。

问题陈述的最后一段有点混乱,您能在问题的内部对其进行编辑/扩展吗?-->“我尝试过终端用户在ForestA中的情况,或者后端服务在ForestA中的情况,这两种情况都适用于S4U2Proxy调用。唯一不起作用的时候是终端用户和终端服务在一个域中,而前端服务在另一个域中。”此外,还有userB、前端服务和后端服务,都在每个林的根域中?我编辑了描述以澄清。同样是的,这都是假设每个林中有一个根域。