Делегирование Kerberos Double Hop из IIS в SQL-сервер (с использованием django)

Делегирование Kerberos Double Hop из IIS в SQL-сервер (с использованием django)

Мне нужно передать учетные данные (встроенная аутентификация Windows) с веб-сайта Django на IIS на внутренний сервер SQL, чтобы он работал в правильном пользовательском контексте.

Вот как выглядит моя установка на данный момент:

  1. Запуск SQL Server sql_sever.domain.comпод учетной записью службыdomain\svc_sqlserver
  2. Запуск веб-сайта Django с app_server.domain.comиспользованием IIS под учетной записью службы domain\svc_appserverс аутентификацией Windows и олицетворением ASP.Net (для поставщика установлено значение Negotiate:Kerberos -> Negotiate -> NTLM) сuseAppPoolCredentials=True
  3. Подключение к SQL-серверу из Django с использованием аутентификации Windows путем установки Trusted_Connection=yesв подключении
  4. Настроил SPN для аутентификации Kerberos для domain\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
    
  5. Доверенный как svc_sqlserverдля svc_appserverделегирования MSSQLSvcсервисам, так и для domain\svc_appserverдобавленных мной HTTPсервисов (из списка выше)

Результат:

  1. Проверка подлинности Kerberos работает на SQL Server. Подтверждено просмотромсхема аутентификации подключенных пользователей
  2. Аутентификация Kerberos работает на сайте Django. Подтверждено проверкой WWW-Authenticateзаголовка ответа и Authorizationзаголовка запроса ( Negotiateиспользуется правильно)
  3. SQL-сервер работает только в том контексте, domain\svc_appserverв котором он должен работать.domain\remote_user

Я работаю над этим уже больше недели, но, хоть убей, не могу понять, как передать контекст аутентифицированного пользователя из IIS в SQL Server. Я просмотрел сотни ссылок, которые нашел в сети, и не уверен, что делать на этом этапе.

Есть ли что-то еще, что я упускаю? Есть ли способ в Django установить контекст пользователя перед установлением соединения с базой данных? Если кто-то может помочь, буду очень признателен. Спасибо!

я использую:

Связанный контент