Можно ли использовать аутентификацию Windows с PHP на IIS для соединений ODBC? - PullRequest
4 голосов
/ 27 февраля 2009

Можно ли использовать аутентификацию Windows пользователей (настройку в iis) для соединений с базой данных в PHP?

Это возможно в мире .NET с помощью техники под названием «олицетворение». Это также существует в мире PHP / IIS?

РЕДАКТИРОВАТЬ : Я использую базу данных MS SQL Server 2005.

Ответы [ 5 ]

3 голосов
/ 03 марта 2009

Если вы можете аутентифицировать приложение PHP с Keberos, вы можете использовать Kerberos Delegation для передачи учетных данных на вторичный сервер.

Кен Шефер ведет целую серию блогов на Kerberos, включая эту статью о делегировании.

2 голосов
/ 08 марта 2009

Олицетворение с помощью Kerberos - самый безопасный ответ, а также самый простой для администрирования. Наличие отдельных «искусственных» пользователей при доступе к ресурсам, таким как базы данных, означает, что вы в основном обходите все возможности для авторизации базы данных, получаете дублирующие точки администрирования доступа и получаете нулевую отслеживаемость на уровне базы данных (вы просто видите, что MySyntheticUser пытался получить доступ к чему-то кто за этим стоял).

Сказав это, я должен предупредить вас, что Kerberos от Microsoft не всегда так прост, как вы ожидаете. Мы столкнулись со значительными трудностями, чтобы заставить его работать между чистыми решениями .NET, IIS, SQL Server 2005, доменами AD и Internet Explorer. Большинство из них сводилось к тому, чтобы настроить доверие было правильно. Кроме того, хотя я сам не являюсь разработчиком PHP, я нахожу некоторые признаки , что у вас могут возникнуть проблемы с доступом к функциональности библиотеки Kerberos. Узнайте, какую поддержку вы можете получить для SSPI . Кроме того, ваш PHP-процесс должен иметь необходимые разрешения для олицетворения пользователей, которые, как я считаю, могут администрироваться через IIS.

Я бы не ожидал, что все это будет простым или легким, особенно потому, что у Microsoft мало стимулов для поддержки языков и платформ, отличных от Microsoft.

1 голос
/ 05 марта 2009

Я знаю, что вы можете указать имя пользователя и пароль, которые вы хотите связать с вашим соединением ODBC, если вы создадите его через System DSN. Я предполагаю, что логин un / pw может быть учетными записями Windows.

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

Вы не сказали, какую базу данных вы используете. Если вы используете MS Access, я знаю, что вы можете скрыть пароли базы данных. Смотрите мой комментарий к другому сообщению .

1 голос
/ 27 февраля 2009

Должен ли каждый пользователь проверяться отдельно? Если нет, вы можете настроить IIS на выдачу себя за одного человека.

0 голосов
/ 06 марта 2009

Каким образом вы запускаете IIS на PHP? Как отдельный CGI или ISAPI?

Мое предпочтительное решение было бы иметь отдельного пользователя на SQL Server для доступа вместо попытки заставить IIS работать как олицетворенного пользователя, что хорошо для машин разработки, но не так хорошо в дальнейшем для производства или даже постановка.

Но если вы используете FastCGI, можно выдать себя за пользователя, которым запускается процесс, с помощью файла конфигурации из того, что я помню, который передает учетные данные пользователя, вошедшего в систему.

...