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