我正在尝试运行一个连接到 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_sqlserverapp_server.domain.com在domain\svc_appserver具有 Windows 身份验证和 ASP.Net Impersonation(提供程序设置为Negotiate:Kerberos -> Negotiate -> NTLM)的服务帐户下使用 IIS运行 Django 网站useAppPoolCredentials=TrueTrusted_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服务(来自上面的列表)
结果 …