ASP.NET Windows身份验证-用户“ NT AUTHORITY / ANONYMOUS LOGON”的登录失败

时间:2019-10-29 15:19:01

标签: sql asp.net iis

这是我的第一个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;

有什么建议吗?谢谢大家!

2 个答案:

答案 0 :(得分:0)

我们通常通过更改应用程序池标识以使用特定的服务帐户(与用户帐户相同,但使用pwd永不过期...)来处理此问题,并允许该服务帐户通过提供sql数据库来连接到sql服务器数据库运行应用程序所需的最少特权,例如在用户数据库上进行读取,写入和执行以及在主数据库上进行读取。

当然,还有其他方法可以做到这一点,但是我们对此感到满意,并且对于每个环境(例如service-appname-dev,service-appname-qa,service-appname-prod)都使用不同的服务帐户。

答案 1 :(得分:0)

这是一个SQL异常,应用程序池标识必须是有权访问数据库的帐户。您可以使用自己的用户帐户对此进行测试。