Начнем с того, что я искал в Интернете около часа, пытаясь выяснить, как это сделать безуспешно, поэтому я пишу этот вопрос.
У меня есть сайт интрасети, который требует доступа к имени пользователя Windows (не серверу, на котором работает Apache, а пользователю, который обращается к сайту интрасети).
Я установил adLDAP, и он работает так, что пользователь может войти в него, чтобы проверить группу, в которой он находится. Но для того, чтобы мой сайт был более безопасным, я бы предпочел получить доступ к имени пользователя Windows.
Я видел, что есть модуль apache под названием mod_auth_sspi, но я не мог найти, как установить его или даже реализовать (использовать) в своем коде.
Я использую Apache v2.4, PHP 5.6.8 на Windows Server 2008.
Итак … я узнал, как это сделать после нескольких часов поиска в Google … действительно, было бы проще найти ответ, но, тем не менее, вот оно:
1) Загрузите следующий модуль для вашей системы (32 бит 64 бит): https://www.apachehaus.net/modules/mod_authnz_sspi/
2) Вставьте файл в папку ваших модулей. /apache/modules/
3) Отредактируйте следующие файлы конфигурации:
3.1) php/php.ini
: Раскомментировать extension=php_ldap.dll
линия.
3,2) apache/conf/httpd.ini
: Добавьте следующее в конец раздела LoadModules:
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule authnz_sspi_module modules/mod_authnz_sspi.so
3.3) Найти <Directory
отметьте и удалите открывающий и закрывающий теги вместе с его содержимым. Затем вставьте следующее:
<Directory />
Options None
AllowOverride All
Order allow,deny
Allow from all
AuthName intranet
AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
SSPIOfferBasic On
SSPIOmitDomain On
Require valid-user
</Directory>
Затем после перезапуска Apache все должно работать. Получить имя пользователя Windows через <?php echo $_SERVER['PHP_AUTH_USER'] ?>
Других решений пока нет …