我的问题 :

我的问题 :

我的问题 :

  • 在 IIS 应用程序(已激活 Windows 身份验证和 Kerberos)上从装有 IE 11 的 Windows Server 2012 调用 URL 失败:在 3 次获取正确密码后,我收到 401 错误(未授权),并且我可以在安全事件查看器中看到以下日志:

    Kerberos 客户端从服务器 servername$ 收到 KRB_AP_ERR_MODIFIED 错误。使用的目标名称为 HTTP/url.xxx.yyy.zzz。这表明目标服务器无法解密客户端提供的票证。当目标服务器主体名称 (SPN) 在目标服务正在使用的帐户以外的帐户上注册时,可能会发生这种情况。确保目标 SPN 仅在服务器使用的帐户上注册。如果目标服务帐户密码与 Kerberos 密钥分发中心为该目标服务配置的密码不同,也会出现此错误。确保服务器上的服务和 KDC 都配置为使用相同的密码。如果服务器名称不是完全限定的,并且目标域 (xxx.yyy.zzz) 与客户端域 (xxx.yyy.zzz) 不同,请检查这两个域中是否存在同名的服务器帐户,或使用完全限定的名称来标识服务器。

  • 从另一个 Windows Server 2012 调用相同的 URL 会出现相同的错误消息
  • 从 Win7 下的控制台调用相同的 URL 运行完美

看起来,我错过了服务器上的安全设置,但我想知道哪一个?

一些上下文信息

我的 Web 应用程序自动部署在 2 台不同的服务器 (WS 2012 R2) 上。在每台服务器安装结束时,都会自动启动一个脚本来检查所有 URL 是否可以使用 http 和 https。因此,我非常希望 URL 检查在服务器本身上执行,而不是在其他控制台上执行。

其他研究

  • 我已检查 SPN,它似乎配置正确
  • 目标域和客户端域相同
  • 使用 Wireshark,似乎我在从控制台调用 URL 时使用了 NTLM 身份验证:

    621 24.297697 IpSrc IpDest HTTP 1014 HTTP/1.1 401 未授权,NTLMSSP_CHALLENGE (text/html)

  • 从我的服务器使用 Wireshark:

    1216 18.322929 IpSrc IpDest KRB5 250 KRB 错误:KRB5KDC_ERR_PREAUTH_REQUIRED

答案1

经过一番调查,问题确实出在配置问题上:按照指南这里我设法使用 Kerberos 进行身份验证。

总结所有的行动,你需要:

  • 在 IIS 上启用 Windows 身份验证
  • 创建账户服务
  • 为您要使用的主机地址创建 SPN
  • 将此服务与用于执行应用程序的应用程序池关联
  • 修改 AD 中帐户服务的委托参数(Trust this computer for delegation for any service
  • 修改 IIS 启用UseKernelModeuseAppPoolCredentials

最后一件事花费了我一些时间:我不知道是否有缓存或复制机制,但这些参数的改变不是立即的......

相关内容