Аутентификация Windows IIS и SQL Server в приложении Django

Аутентификация Windows IIS и SQL Server в приложении Django

Я пытаюсь запустить веб-сайт Django, который подключается к SQL Server, используя IIS с аутентификацией Windows.

Сервер IIS и сервер SQL находятся на разных машинах в одном домене, т.е.iis_machine.example.comиsql_machine.example.com

Чего я пытаюсь добиться:

  1. Выдайте себя за удаленного пользователя, получающего доступ к веб-сайту Django, размещенному на IIS, чтобы его учетные данные Windows передавались на SQL Server для аутентификации.

Что я пробовал до сих пор:

  1. Добавил это в свой файл web.config для имитации

    <system.web> <identity impersonate="true" /> </system.web>

  2. Включил аутентификацию Windows и настроил пул приложений (джанго_веб) для сайта django, как показано ниже

    Вот как выглядит моя аутентификация для сайта Django в IIS

    Вот как выглядит мой пул приложений для сайта Django в IIS

  3. ДобавленIIS APPPOOL\django_webк SQL-серверуБезопасность\Логины

Результат:

  1. Когда я захожу на сайт Django, IIS запрашивает у пользователя его учетные данные Windows, и я могу успешно войти в систему.
  2. Если пользователь пытается получить доступ к 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. В качестве альтернативы вы можете создать для нее пользовательскую учетную запись службы.

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