【发布时间】:2018-06-18 16:40:57
【问题描述】:
我正在苦苦挣扎,希望你能帮助我。
场景: 我在测试服务器上编写了一个 Web 应用程序,一切正常。我将完成的应用程序移动到实时系统,如果在 IIS 上启用了 Windows 身份验证,我会收到 HTTP 401 错误。我通过在服务器名称上设置 SPN 解决了这个问题,例如
setspn -a http/contoso contoso
但它需要与我的服务帐户一起使用。 我为服务帐户设置了 spn,例如:
setspn -a http/contoso.com mydomain\serviceaccount
setspn -a http/contoso mydomain\serviceaccount
应用程序池作为 mydomain\serviceaccount 运行。在 Active Directory 中为此帐户设置了 Kerberos 委派。但仍然得到 401 错误。出于测试目的,服务帐户在此服务器上具有管理员角色。
【问题讨论】:
-
IIS 是愚蠢的,如果您无权访问资源,即使您通过了正确的身份验证,它仍然会返回 401。我为此浪费了几个小时。这可能是你的情况吗?
-
我是这台服务器上的管理员,例如服务帐户。我发现了一些额外的教程如何解决这个问题,但是 IT 管理员不允许在他的域上执行此步骤,因为如果这种可能的解决方案可以解决我们的问题,我们现在不会。在开发系统上一切正常。这个问题只存在于生产系统上。 SPN 现在直接在服务器上设置,一切正常。
-
打开 Wireshark 并查看您的票证是否正常并检查 Windows 事件日志。
标签: kerberos windows-authentication http-status-code-401 iis-8.5 spn