我有一个非常典型的 .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$ 权限。
以下不起作用,请参阅评论。
由于网络服务帐户的权限受到限制,您可能需要授予其更多权限才能使您的应用程序正常运行。