【问题标题】:How to make IIS use AppPool Identity to connect to SQL Server instead of NT Authority\IUSR?如何让 IIS 使用 AppPool Identity 连接到 SQL Server 而不是 NT Authority\IUSR?
【发布时间】:2021-11-12 12:04:00
【问题描述】:

我已经设置了一个带有 IIS、PHP 8 和 SQL 驱动程序以及 SQL Server 2019 Express 的 Windows Server 2019 机器。我创建了一个测试 PHP 应用程序和相应的应用程序池,然后设置了一个测试数据库。尝试使用 sqlsrv_connect 连接时,出现以下错误:

用户“NT AUTHORITY\IUSR”登录失败。

(SQL 错误中还有更多内容,但它只是原始错误数组输出,Stack Overflow 不喜欢它。)

现在,我相信我已正确配置一切以使用应用程序池标识而不是 NT AUTHORITY\IUSR。我从另一个较旧的(Server 2012)Web 服务器复制了设置。我的设置截图:

Anonymous Authentication using App pool identity in IIS

App pool identity added on database in SQL Server

我是否遗漏了某处的设置,或者 Server 2019 处理应用程序池标识的方式与 Server 2012 不同?我已经尝试按照这个优秀的 SO 页面上的说明进行操作:

IIS AppPool to SQL Server permissions (adding NT AUTHORITY\IUSR)

但是就像服务器不在乎我告诉它使用应用程序池一样。

更新编辑:谜团已解决

抱歉,这是一个极端用户错误的案例。我将“test”目录放在 wwwroot 下,ala c:\inetpub\wwwroot\test。我以www.domain.com/test 的身份访问它,而我需要做的是将它设置为以test.domain.com 运行。它在 wwwroot 应用程序池(在本例中使用 IUSR)下运行,因为这就是我访问它的方式。感谢所有帮助我解决此问题的人!

【问题讨论】:

  • 您确定您的应用在正确的 AppPool 中运行吗?
  • 据我所知,IIS 表示它在“测试”AppPool 中:i.imgur.com/TadMdAH.png
  • PHP 甚至托管在 App Pool 进程中吗?还是使用 CGI?
  • 我正在使用 CGI,但 PHP 似乎已正确安装并运行。我可以让 phpinfo() 运行 - i.imgur.com/VRbuEmW.png
  • CGI“模拟用户”设置是什么?

标签: sql sql-server iis application-pool applicationpoolidentity


【解决方案1】:

向大家道歉;这是一个极端的用户错误案例。

我将test 目录放在wwwroot 下,即c:\inetpub\wwwroot\test。我以www.domain.com/test 访问它,而我需要做的是将它设置为test.domain.com 运行。它在wwwroot 应用程序池(在本例中使用IUSR)下运行,因为这是我访问它的方式。

感谢所有帮助我解决此问题的人!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 2010-11-19
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    相关资源
    最近更新 更多