Kerberos 身份验证问题:站点在一段时间后自动停止工作

Kerberos authentication issue : Site stops working automatically after some time

有一个网站在 windows 身份验证上设置为 运行。该站点下有 3 个 Web 应用程序,每个应用程序都在自己的应用程序池中,但具有相同的域帐户。 ASP.NET 模拟、使用应用程序池凭据、使用内核模式身份验证设置为 true。

  1. 网站 DNS url 的 SPN 已用于应用程序池帐户。
  2. SQL 服务的 SPN 已到位。
  3. 应用程序池帐户设置为委托给 SQL 服务帐户。

通过上述设置,这三个应用程序可以正常工作一段时间。然后他们会自动停止连接到数据库并出现错误 "Login failed for user NT Authority\Anonymous Logon".

重置IIS后,这3个应用程序保持了一段时间,然后又停止连接到数据库,一个接一个。奇怪?

可能是什么问题?有什么指点吗?

简答:

  1. 创建单独的网站和应用程序池。
  2. 为三个网站创建 3 个 SPN。
  3. 为三个数据库创建 3 个 SPN。

长答案:

  • 所有 3 个 Web 应用程序在同一个数据库服务器中都有自己的数据库。
  • 为 URL 发出单个 kerberos 票证,只要命中 1 个应用程序就可以正常工作。
  • 但是网站下面有 3 个 Web 应用程序。因此必须创建 3 个具有不同 URLs 的单独网站,具有单独的应用程序池,但使用相同的应用程序池标识。

    1. 为 3 个 DNS 条目设置了 SPN。
    2. 并且还必须为 3 个数据库创建 3 个唯一的 SPN。

以上都搞定了,就没有问题了!欢呼!