1

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

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

有了上述设置,这三个应用程序可以正常工作一段时间。然后他们自动停止连接到数据库,并出现错误“用户 NT Authority\Anonymous Logon 登录失败”。

重置IIS后,这3个应用程序停留了一段时间,然后他们又一次停止连接到数据库,一个应用程序一个接一个。诡异的?

可能是什么问题?任何指针?

4

1 回答 1

1

简短的回答

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

长答案

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

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

完成上述操作后,就没有问题了!万岁!

于 2017-02-13T10:05:39.107 回答