我刚刚安装了带有 SQL 服务器和 asp.net mvc 应用程序的 ISS。我希望我的应用程序使用 Windows 身份验证。在我的应用程序方面,我知道我有良好的连接字符串,因为我在本地计算机上运行它并且它运行良好。
在我的新远程服务器上,它无法工作 - 所以我将连接字符串更改为使用凭据 - sa,然后它就可以工作了。因此,我显然缺少一些 Windows 身份验证的配置。
我所做的就是将网络服务添加到我的 sql server 登录名中,并授予其管理员权限。此外,我的应用程序池正在作为网络服务运行。它仍然不起作用,我错过了什么?
编辑澄清:我的 SQL 服务器中已启用 WinAuth。
答案1
我认为“网络服务”用户没有按您期望的方式工作。
尝试将应用程序池设置为以特定用户身份运行,然后将该用户添加到 slq 服务器登录名。然后在用户映射下为该用户授予其对特定数据库所需的最小权限集。通常 db_datareader 和 db_datawriter 就足够了。
请注意,您使用的用户不需要在计算机上拥有任何特殊权限。它可以是本地用户或根本不属于任何安全组的域用户。如果您为此目的专门创建新用户,则可以将其设为标准用户,然后进入用户管理器并将其从用户组中删除,这样它就没有任何对计算机的默认访问权限。这样,您仍然可以享受在连接字符串中使用 Windows 身份验证方法的优势。