我正在尝试运行一个连接到 SQL Server 的 django 网站,使用 IIS 和 Windows 身份验证。
IIS 服务器和 SQL 服务器位于同一域下的不同计算机上,即iis_machine.example.com和sql_machine.example.com
我想要实现的目标:
到目前为止我尝试过的:
将其添加到我的 web.config 文件中以进行模拟
<system.web>
<identity impersonate="true" />
</system.web>
启用Windows身份验证并为django网站设置应用程序池(django_web),如下所示
将IIS APPPOOL\django_web添加到 SQL Server Security\Logins
结果:
如果用户登录后尝试访问 SQL Server
案例一. IIS、SQL Server 位于不同的计算机上: SQL Server 身份验证失败,并显示“用户 'domain\MACHINENAME$ 登录失败”
情况 …
我需要将凭据(集成 Windows 身份验证)从 IIS 上的 django 网站传递到后端 SQL 服务器,以便它在正确的用户上下文下运行。
这是我的设置到目前为止的样子:
sql_sever.domain.com
在服务帐户下运行 SQL Serverdomain\svc_sqlserver
app_server.domain.com
在domain\svc_appserver
具有 Windows 身份验证和 ASP.Net Impersonation(提供程序设置为Negotiate:Kerberos -> Negotiate -> NTLM
)的服务帐户下使用 IIS运行 Django 网站useAppPoolCredentials=True
Trusted_Connection=yes
在连接中设置,使用 Windows 身份验证从 django 连接到 SQL 服务器对于这两个Kerberos身份验证配置的SPNdomain\svc_sqlserver
和domain\svc_appserver
如下:
setspn -a HTTP/app_server domain\svc_appserver
setspn -a HTTP/app_server.domain.com domain\svc_appserver
setspn -a MSSQLSvc/sql_server.domain.com:PORT domain\svc_sqlserver
setspn -a MSSQLSvc/sql_server.domain.com:INSTANCE domain\svc_sqlserver
setspn -a MSSQLSvc/sql_server.domain.com domain\svc_sqlserver
Run Code Online (Sandbox Code Playgroud)信任svc_sqlserver
和svc_appserver
委托给MSSQLSvc
服务,另外domain\svc_appserver
我也添加了HTTP
服务(来自上面的列表)
结果 …