Kerberos委派和特定于端口的SPN

时间:2013-10-17 21:12:18

标签: powershell active-directory kerberos windows-server-2012 identity-delegation

我有一个系统,我使用简单委派的Kerberos将AD用户的凭据从网站转发到使用集成Windows身份验证的下游HTTP REST服务。所有服务器都是Windows Server 2012 R2。

这很有效。

当我开始对运行后端HTTP服务的相同服务器进行Powershell远程处理时出现问题。 Enter-PSSession在目标计算机上为WSMan服务发出Kerberos身份验证请求。 AD看到此请求,并使用我的自定义HTTP服务运行的标识加密请求的票证,WSMan服务显然无法使用,并且远程处理失败。

我知道可以强制IE执行特定于端口的SPN请求(通过KB908209),但我无法让第二跳(即IIS代理请求)执行端口 - 具体要求。我也没有能够使用powershell为WSMan在5985上发出特定于端口的请求。

使事情更具体:

  1. 客户端浏览器向ServerA发出请求。浏览器向AD发出针对HTTP / ServerA的Kerberos票证请求,该请求被授予然后发送到ServerA。
  2. ServerA希望向http://ServerB:15200发送委托请求。
  3. ServerA向AD请求SPN HTTP / ServerB的Kerberos票证。它请求SPN HTTP / ServerB:15200。我想要它。
  4. 如果我将我的SPN设置为HTTP / ServerB:15200,则IIS中的简单委派会失败,但PowerShell远程处理会起作用。如果我将我的SPN设置为HTTP / ServerB,则简单委派可以正常工作,但PowerShell远程处理失败。如果我将我的SPN设置为HTTP / ServerB:5985,则无效。

    我对这一点感到非常难过 - 似乎代表团和每个端口的SPN并不能很好地协同工作?

2 个答案:

答案 0 :(得分:1)

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

或者,您可以查看how this person hosted WinRM in IIS with a custom account

答案 1 :(得分:0)

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