【发布时间】:2013-10-17 21:12:17
【问题描述】:
我有一个系统,我在其中使用带有简单委托的 Kerberos,使用集成的 Windows 身份验证将 AD 用户的凭据从网站转发到下游 HTTP REST 服务。所有服务器都是 Windows Server 2012 R2。
这很好用。
当我开始对运行后端 HTTP 服务的同一台服务器进行 Powershell 远程处理时,问题就出现了。 Enter-PSSession 向目标机器上的 WSMan 服务发出 Kerberos 身份验证请求。 AD 看到这个请求,并使用我的自定义 HTTP 服务运行的身份加密请求的票证,WSMan 服务显然不能使用,并且远程处理失败。
我知道可以强制 IE 执行特定于端口的 SPN 请求(通过 KB908209),但我无法让第二跳(即 IIS 代理请求)执行特定于端口的请求.我也无法让 powershell 在 5985 上为 WSMan 发出特定于端口的请求。
为了让事情更具体:
- 客户端浏览器向 ServerA 发出请求。浏览器向 AD 发出 HTTP/ServerA 的 Kerberos 票证请求,该请求被授予然后发送到 ServerA。
- ServerA 想要向
http://ServerB:15200发出委托请求。 - ServerA 向 AD 请求 SPN HTTP/ServerB 的 Kerberos 票证。它确实不向 SPN HTTP/ServerB:15200 发出请求。我想要它。
如果我将 SPN 设置为 HTTP/ServerB:15200,则 IIS 中的简单委派会失败,但 powershell 远程处理工作。如果我将 SPN 设置为 HTTP/ServerB,则简单委派有效,但 powershell 远程处理失败。如果我将 SPN 设置为 HTTP/ServerB:5985,则无法正常工作。
在这一点上我完全被难住了——委托和每个端口的 SPN 似乎不能很好地结合在一起?
【问题讨论】:
标签: powershell active-directory kerberos windows-server-2012 identity-delegation