NTLM для Flask/IIS/SqlAlchemy

Я пытаюсь развернуть приложение flask на сервере Windows (IIS 7.5), которое передает клиентскую проверку подлинности NTLM Windows на соединение SQL Server в SQL Alchemy.

На данный момент строка подключений выглядит так: "DRIVER={SQL Server Native Client 11.0};Server=%s;Database=%s;TDS_Version=8.0;Trusted_Connection=yes;"

А Trusted_Connection=yes служит для передачи владельца процесса веб-сервера SQL Server. Это прекрасно работает при запуске сервера разработки, потому что я вызываю сервер, чтобы передать мои учетные данные для доступа. НО когда IIS запускает сервер, он наследует идентификатор пула приложений и отправляет поддельного пользователя, не являющегося доменом, в качестве учетных данных для аутентификации.

Я пытался использовать параметр WindowsAuth в веб-конфигурации, но SQLAlchemy продолжает передавать идентификатор пула приложений на сервер sql.


person jsnb    schedule 10.03.2017    source источник


Ответы (1)


У меня были аналогичные проблемы с подключениями к базе данных SQL, и обходной путь, который сработал, заключался в создании сетевого пользователя Windows и запуске приложений IIS с этим идентификатором вместо идентификатора пула приложений. Эта идентификация «реального пользователя» затем передается любым нижестоящим вызовам (SQL).

Это хорошо масштабируется в корпоративной среде и предотвращает большинство проблем, связанных с изменением безопасности, поскольку пользователь является «обычным пользователем» и лишь номинально является «служебной учетной записью».

person Kirk    schedule 02.10.2017