Назад | Перейти на главную страницу

Делегирование двойного перехода Kerberos от 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. Настроены имена участников-служб для проверки подлинности 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 способ установить контекст пользователя перед установкой соединения с базой данных? Если кто-то может помочь, я буду очень признателен. Спасибо!

я использую: