小编not*_*bot的帖子

Django 应用程序中的 IIS 和 SQL Server Windows 身份验证

我正在尝试运行一个连接到 SQL Server 的 django 网站,使用 IIS 和 Windows 身份验证。

IIS 服务器和 SQL 服务器位于同一域下的不同计算机上,即iis_machine.example.comsql_machine.example.com

我想要实现的目标

  1. 模拟远程用户访问 IIS 上托管的 django 网站,因此他的 Windows 凭据将传递到 SQL Server 进行身份验证。

到目前为止我尝试过的

  1. 将其添加到我的 web.config 文件中以进行模拟

    <system.web> <identity impersonate="true" /> </system.web>

  2. 启用Windows身份验证并为django网站设置应用程序池(django_web),如下所示

    这就是我的 Django 网站身份验证在 IIS 中的样子

    这就是我的 django 网站应用程序池在 IIS 中的样子

  3. 将IIS APPPOOL\django_web添加到 SQL Server Security\Logins

结果

  1. 当我访问 django 网站时,IIS 提示用户输入 Windows 凭据,我可以成功登录
  2. 如果用户登录后尝试访问 SQL Server

    案例一. IIS、SQL Server 位于不同的计算机上: SQL Server 身份验证失败,并显示“用户 'domain\MACHINENAME$ 登录失败

    情况 …

sql-server asp.net iis django windows-authentication

5
推荐指数
0
解决办法
723
查看次数

从 IIS 到 SQL 服务器的 Kerberos 双跳委派(使用 django)

我需要将凭据(集成 Windows 身份验证)从 IIS 上的 django 网站传递到后端 SQL 服务器,以便它在正确的用户上下文下运行。

这是我的设置到目前为止的样子

  1. sql_sever.domain.com在服务帐户下运行 SQL Serverdomain\svc_sqlserver
  2. app_server.domain.comdomain\svc_appserver具有 Windows 身份验证和 ASP.Net Impersonation(提供程序设置为Negotiate:Kerberos -> Negotiate -> NTLM)的服务帐户下使用 IIS运行 Django 网站useAppPoolCredentials=True
  3. 通过Trusted_Connection=yes在连接中设置,使用 Windows 身份验证从 django 连接到 SQL 服务器
  4. 对于这两个Kerberos身份验证配置的SPNdomain\svc_sqlserverdomain\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)
  5. 信任svc_sqlserversvc_appserver委托给MSSQLSvc服务,另外domain\svc_appserver我也添加了HTTP服务(来自上面的列表)

结果 …

sql-server iis django kerberos pyodbc

5
推荐指数
1
解决办法
1466
查看次数