Delegação Kerberos Double Hop do IIS para o SQL Server (usando Django)

Delegação Kerberos Double Hop do IIS para o SQL Server (usando Django)

Preciso passar as credenciais (Autenticação Integrada do Windows) de um site Django no IIS para um servidor SQL back-end para que ele seja executado no contexto de usuário adequado.

É assim que minha configuração parece até agora:

  1. Executando o SQL Server em sql_sever.domain.comuma conta de serviçodomain\svc_sqlserver
  2. Executando o site Django app_server.domain.comusando IIS em uma conta de serviço domain\svc_appservercom autenticação do Windows e representação ASP.Net (provedores está definido como Negotiate:Kerberos -> Negotiate -> NTLM) comuseAppPoolCredentials=True
  3. Conectando-se ao servidor SQL do Django usando autenticação do Windows configurando Trusted_Connection=yesa conexão
  4. SPNs configurados para autenticação Kerberos para domain\svc_sqlservere domain\svc_appservercomo segue:

    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
    
  5. Confiável tanto svc_sqlserverpara svc_appserverdelegação de MSSQLSvcserviços quanto para serviços domain\svc_appserveradicionados HTTP(da lista acima)

Resultado:

  1. A autenticação Kerberos funciona no SQL Server. Confirmado olhandoesquema de autenticação de usuários conectados
  2. A autenticação Kerberos funciona no site Django. Confirmado inspecionando WWW-Authenticateo cabeçalho de resposta e Authorizationo cabeçalho de solicitação ( Negotiateestá sendo usado corretamente)
  3. O servidor SQL é executado apenas no contexto de domain\svc_appserverquando deveria estar sendo executadodomain\remote_user

Estou trabalhando nisso há mais de uma semana, mas não consigo descobrir como passar o contexto do usuário autenticado do IIS para o SQL Server. Passei por centenas de links que encontrei on-line e não tenho certeza do que fazer neste momento.

Há mais alguma coisa que estou perdendo? Existe alguma maneira no Django de definir o contexto do usuário antes de estabelecer conexão com o banco de dados? Se alguém puder ajudar, eu realmente aprecio. Obrigado!

estou a usar:

informação relacionada