![如何通过 Windows Auth w/oa 服务帐户从 IIS 连接到远程 SQL?](https://linux22.com/image/1554543/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%20Windows%20Auth%20w%2Foa%20%E6%9C%8D%E5%8A%A1%E5%B8%90%E6%88%B7%E4%BB%8E%20IIS%20%E8%BF%9E%E6%8E%A5%E5%88%B0%E8%BF%9C%E7%A8%8B%20SQL%EF%BC%9F.png)
我有一个非常典型的 .NET 应用程序,它使用 Entity Framework、MS SQL 和 IIS。开发该应用程序时,预期 SQL 服务器将在 IIS 本地运行,并使用 SQL 身份验证进行数据库连接。用户将通过 Windows 身份验证登录该应用程序。
最近,我的任务是将 Web 服务器和 SQL 服务器分离到两台服务器上;但是,我不能再使用 SQL 身份验证,而是必须使用 Windows 身份验证。
我的新连接字符串现在是这样的:
<add name="MyDbConn2" connectionString="Initial Catalog=MyDb;Data Source=MyServer;Integrated Security=SSPI;"/>
。
我是我的本地开发环境,我已尝试将 AppPool 用户设置为服务帐户(例如“domain\User”),并<identity/>
在 web.config 中将其设置为使用相同的 AppPool 用户,如下所示:
<identity impersonate="true" userName="domain\User" password="****"/>
只要用户拥有 SQL 框的权限,这种方法就可以奏效。但现在,我还被告知,我也不能使用服务帐户,因为用户/密码必须存储在配置文件中。
我甚至无法想象如果没有服务帐户这将如何工作,所以我希望这个社区有一些想法。
答案1
您可以通过将服务更改为作为网络服务帐户运行来实现此目的,然后在 SQL Server 中授予 domain\computername$ 权限。
以下不起作用,请参阅评论。
由于网络服务帐户的权限受到限制,您可能需要授予其更多权限才能使您的应用程序正常运行。