0

我有一个系统,我在其中使用带有简单委派的 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 发出特定于端口的请求。

为了使事情更具体:

  1. 客户端浏览器向 ServerA 发出请求。浏览器向 AD 发出 HTTP/ServerA 的 Kerberos 票证请求,该请求被授予然后发送到 ServerA。
  2. ServerA 想要向 发出委托请求http://ServerB:15200
  3. 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 似乎不能很好地协同工作?

4

2 回答 2

1

您可以通过为 ServerB 设置别名来解决此问题,将 HTTP/ServerBAlias SPN 提供给 IIS 帐户,将 HTTP/ServerB 提供给 PS 帐户,然后让 ServerA 将其请求发送到 ServerBAlias。或者在一个 SPN 中使用 FQDN(例如 ServerB.domain.local),在另一个 SPN 中使用 NETBIOS(例如 ServerB)。

或者,您可以查看此人如何使用自定义帐户在 IIS 中托管 WinRM

于 2013-10-20T23:02:47.350 回答
0

您是否将 HTTP/ServerA 的 ms-DS-Allowed-to-Delegate-to 属性设置为 HTTP/ServerB 和 HTTP/ServerB:15200 的列表?

于 2013-10-18T09:30:39.047 回答