Мне нужно передать учетные данные (встроенная аутентификация Windows) с веб-сайта Django на IIS на внутренний сервер SQL, чтобы он работал в правильном пользовательском контексте.
Вот как выглядит моя установка на данный момент:
- Запуск SQL Server
sql_sever.domain.com
под учетной записью службыdomain\svc_sqlserver
- Запуск веб-сайта Django с
app_server.domain.com
использованием IIS под учетной записью службыdomain\svc_appserver
с аутентификацией Windows и олицетворением ASP.Net (для поставщика установлено значениеNegotiate:Kerberos -> Negotiate -> NTLM
) сuseAppPoolCredentials=True
- Подключение к SQL-серверу из Django с использованием аутентификации Windows путем установки
Trusted_Connection=yes
в подключении Настроил 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
Доверенный как
svc_sqlserver
дляsvc_appserver
делегированияMSSQLSvc
сервисам, так и дляdomain\svc_appserver
добавленных мнойHTTP
сервисов (из списка выше)
Результат:
- Проверка подлинности Kerberos работает на SQL Server. Подтверждено просмотромсхема аутентификации подключенных пользователей
- Аутентификация Kerberos работает на сайте Django. Подтверждено проверкой
WWW-Authenticate
заголовка ответа иAuthorization
заголовка запроса (Negotiate
используется правильно) - SQL-сервер работает только в том контексте,
domain\svc_appserver
в котором он должен работать.domain\remote_user
Я работаю над этим уже больше недели, но, хоть убей, не могу понять, как передать контекст аутентифицированного пользователя из IIS в SQL Server. Я просмотрел сотни ссылок, которые нашел в сети, и не уверен, что делать на этом этапе.
Есть ли что-то еще, что я упускаю? Есть ли способ в Django установить контекст пользователя перед установлением соединения с базой данных? Если кто-то может помочь, буду очень признателен. Спасибо!
я использую:
- джанго 2.0.7
- django-pyodbc-azure
- Питон 3.6.5
- IIS 10, SQL Server 2014