Может ли интрасеть PHP совместно использовать логины Windows? - PullRequest
7 голосов
/ 11 марта 2009

Я создал несколько ресурсов интрасети на основе PHP, которые требуют, чтобы пользователи входили в систему. Пользователи создают свои собственные имена входа, и я проверяю, что они вошли в систему с помощью файла cookie.

Меня спросили, могу ли я вместо этого привязать этот логин к своему логину Windows. Мой первоначальный ответ был: «Веб-страница не может получить доступ к вашей учетной записи Windows - это было бы угрозой безопасности». Но один из наших отделов использует Sharepoint, и он фактически привязан к входу в Windows.

Как это сделать? Могу ли я сделать это на PHP? Если так, то почему это не ужасная дыра в безопасности?

Ответы [ 3 ]

8 голосов
/ 11 марта 2009

То, что вы ищете, - это аутентификация NTLM на веб-сайте PHP, что вполне выполнимо, но, похоже, в PHP нет единого способа сделать это.

Взгляните на http://siphon9.net/loune/2007/10/simple-lightweight-ntlm-in-php/

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

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

5 голосов
/ 11 марта 2009

PHP поддерживает LDAP, поэтому вы можете получить доступ к Active Directory Windows

Этот проект существует на SourceForge: adLDAP - «Аутентификация LDAP с помощью PHP для Active Directory»

4 голосов
/ 11 марта 2009

Часто это делается с использованием комбинации LDAP и NTLM. Браузеры, такие как IE и Firefox, могут выполнять проверку подлинности NTLM, и я считаю, что именно так работает Sharepoint. Я запускаю приложение портала на основе Java, которое использует LDAP для синхронизации пользователей и NTLM для аутентификации.

То, что вы абсолютно не хотите делать, - это чтобы пользователь вводил имя пользователя и пароль своего домена в браузер. В прошлые годы я видел несколько проектов, использующих этот подход с LDAP для аутентификации пользователей Windows. Вы правы, это проблема безопасности. Пользователь должен ввести свой пароль только один раз: при входе на рабочую станцию. Последнее, что вам нужно, это пароли, которые хранятся в кеш / временных файлах.

Я прошу прощения за то, что не могу дать ответ "вот как вы делаете это с приложением PHP". Насколько я знаю, нет единого ответа на эту проблему.

(Одна вещь, которую я делал в прошлом, и я никогда не проверял, была ли она правильной или неправильной, состояла в том, чтобы использовать PHP из IIS. Если вы используете IIS, тогда PHP заполнит серверную переменную REMOTE_USER с именем пользователя Windows (DOMAIN \ user). Это сработало для того, что я делал в то время.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...