使用IIS 8.5,ASP.Net Core和HttpPlatformHander的Kerberos约束委派

时间:2016-05-21 04:46:23

标签: asp.net authentication kerberos

我使用最新的ASP.Net Core编写了WebApplication。我们使用匿名身份验证使用HttpPlatformHandler和IIS 8.5成功托管应用程序。我们需要使用Kerberos身份验证,并且需要使用Kerberos约束委派。

我们的运营管理员已设置了所有必需的SPN。我们正在使用服务帐户,并且所有SPN似乎都已正确注册。我们有许多其他应用程序(SSRS SharePoint等)具有类似的设置

在IIS中,我完成了以下步骤:

  • 创建了一个新的AppPool,它是" No Managed Code"和#34; Integrated Pipeline"
  • 我们正在使用" Identity"
  • 下的服务帐户
  • 创建了一个新的Web应用程序
  • Windows身份验证"已启用"以谈判为主要提供者
  • 匿名身份验证"已禁用"
  • system.webServer / security / authentication / windowsAuthentication" useAppPoolCredentials = True"和" useKernelMode = False"

System.WebServer Security Authentication Windows Authentication Screen Capture

  • 我还确保在HttpPlatform配置下将forwardWindowsAuth令牌设置为True

HttpPlatform IIS Screen Capture

当我从WebApi执行HttpGet时,我的应用程序抛出了一个身份验证错误,即"服务帐户"无法登录服务器。 这看起来很奇怪,所以我现在正在运行一个小提琴跟踪,发现在认证页面呈现之前我得到了3 401个错误。

下面的结果显示WWW-Authenticate Header(Negotiate)似乎是Kerberos回复。

1 个答案:

答案 0 :(得分:0)

我遇到了完全相同的行为 - IIS设置& web.config的更改没有任何区别。

在我的情况下,我只需要重新启动服务器,这很有趣。检查NTLM是否正常工作,如果是,那么这可能是你的问题(我猜这是与SPN相关的 - 我在创建SPN后没有重新启动服务器。)