
Я пытаюсь запустить веб-сайт Django, который подключается к SQL Server, используя IIS с аутентификацией Windows.
Сервер IIS и сервер SQL находятся на разных машинах в одном домене, т.е.iis_machine.example.comиsql_machine.example.com
Чего я пытаюсь добиться:
- Выдайте себя за удаленного пользователя, получающего доступ к веб-сайту Django, размещенному на IIS, чтобы его учетные данные Windows передавались на SQL Server для аутентификации.
Что я пробовал до сих пор:
Добавил это в свой файл web.config для имитации
<system.web> <identity impersonate="true" /> </system.web>
Включил аутентификацию Windows и настроил пул приложений (джанго_веб) для сайта django, как показано ниже
ДобавленIIS APPPOOL\django_webк SQL-серверуБезопасность\Логины
Результат:
- Когда я захожу на сайт Django, IIS запрашивает у пользователя его учетные данные Windows, и я могу успешно войти в систему.
Если пользователь пытается получить доступ к SQL Server после входа в систему
Случай а. IIS, SQL Server находятся на разных компьютерах: проверка подлинности SQL-сервера завершается ошибкой "Не удалось войти в систему для пользователя 'domain\MACHINENAME$'
Случай б. IIS, SQL Server находятся на одном компьютере, аутентификация SQL Server прошла успешно, но используются учетные данные аутентификации.IIS APPPOOL\django_webнетдомен\удаленный_пользователь
Я понимаю, что в этой настройке есть некоторые трюки с Kerberos. К сожалению, я всего лишь программист и не очень хорошо знаком с тем, как работает Kerberos. Если кто-то опытный в этой области, мог бы пролить свет на то, как будет работать эта настройка, это было бы очень ценно. Спасибо!
Я использую:
- ИИС 10
- SQL-сервер 2014
- джанго 2.0.7
- Питон 3.6.5
- Виндовс 8/10
решение1
Вам нужно настроить django_web
учетную запись, чтобы разрешить делегирование на SQL-сервер. Я думаю, поскольку это так, IIS APPPOOL\django_web
вам на самом деле нужно настроить ее на учетной записи машины в Active Directory. В качестве альтернативы вы можете создать для нее пользовательскую учетную запись службы.