这是我的第一个Web应用程序(ASP.NET MVC),遇到了一些问题,希望有人能帮助我。我正在尝试使Windows身份验证正常工作,但是在将项目部署到IIS之后,仍然出现以下错误:
用户'NT AUTHORITY \ ANONYMOUS LOGON'登录失败。
SqlException(0x80131904):用户'NT AUTHORITY \ ANONYMOUS LOGON'登录失败
在过去的几天里,我已经做了很多搜索工作,但是我似乎无法弄清楚我缺少什么。在Visual Studio中运行,我没有收到此错误。
在我的Web.config中,我进行了以下设置:
<authentication mode="Windows" />
<identity impersonate="true"/>
对于服务器,这是带有IIS v10的Win Server 2016数据中心。
在我的应用程序池中,有以下设置: 身份-ApplicationPoolIdentity 加载用户个人资料-True
对于网站,我启用了以下身份验证: ASP.NET模拟 Windows身份验证的扩展保护设置为“接受”,提供程序位于NTLM上方,其下方是“协商”。
工作站,SQL Server和IIS服务器都在同一域中。
我的连接字符串设置为:
Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=FOO;Data Source=SERVER\\DB; Encrypt=true; Trusted_Connection=Yes; TrustServerCertificate=true;
有什么建议吗?谢谢大家!
答案 0 :(得分:0)
我们通常通过更改应用程序池标识以使用特定的服务帐户(与用户帐户相同,但使用pwd永不过期...)来处理此问题,并允许该服务帐户通过提供sql数据库来连接到sql服务器数据库运行应用程序所需的最少特权,例如在用户数据库上进行读取,写入和执行以及在主数据库上进行读取。
当然,还有其他方法可以做到这一点,但是我们对此感到满意,并且对于每个环境(例如service-appname-dev,service-appname-qa,service-appname-prod)都使用不同的服务帐户。
答案 1 :(得分:0)
这是一个SQL异常,应用程序池标识必须是有权访问数据库的帐户。您可以使用自己的用户帐户对此进行测试。