Можете ли вы получить имя пользователя Windows (AD) в PHP? - PullRequest
43 голосов
/ 03 октября 2008

У меня есть веб-приложение PHP в интрасети, которое может извлечь IP и имя хоста текущего пользователя на этой странице, но мне было интересно, есть ли способ получить / извлечь их имя пользователя Active Directory / Windows. Возможно ли это?

Ответы [ 15 ]

0 голосов
/ 28 июля 2017

Это простой пример интеграции NTLM AD, позволяющий единый вход в Internet Explorer, требующий входа / настройки в других браузерах.

Пример PHP

<?php 
$user = $_SERVER['REMOTE_USER'];
$domain = getenv('USERDOMAIN');

?>

В вашем файле apache httpd.conf

LoadModule authnz_sspi_module modules/mod_authnz_sspi.so

<Directory "/path/to/folder">
    AllowOverride     All
    Options           ExecCGI
    AuthName          "SSPI Authentication"
    AuthType          SSPI
    SSPIAuth          On
    SSPIAuthoritative On
    SSPIOmitDomain    On
    Require           valid-user
    Require           user "NT AUTHORITY\ANONYMOUS LOGON" denied
</Directory>

А если вам нужен модуль, эта ссылка полезна:

https://www.apachehaus.net/modules/mod_authnz_sspi/

0 голосов
/ 15 марта 2017

Я попробовал почти все эти предложения, но все они возвращали пустые значения. Если у кого-то еще есть эта проблема, я нашел эту удобную функцию на php.net (http://php.net/manual/en/function.get-current-user.php):

get_current_user();
$username = get_current_user();
echo $username;

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

0 голосов
/ 07 марта 2017

попробуйте этот код:

$user= shell_exec("echo %username%"); 
    echo "user : $user";

вы получаете ваше имя пользователя Windows (AD) в php

0 голосов
/ 16 декабря 2015

Ссылка пытается также выяснить, является ли AUTH_USER частью определенной доменной группы; Умный способ сделать это - создать заблокированную папку с текстовыми файлами (может быть пустым). Установите безопасность только для группы безопасности / дистрибутива, которую вы хотите проверить. Как только вы запустите @file_get_contents (<--- выдаст предупреждение) ... если у пользователя нет доступа к группе, он не сможет получить содержимое файла и, следовательно, не будет иметь доступа к этой конкретной группе AD. Это просто и прекрасно работает. </p>

0 голосов
/ 24 апреля 2012

get_user_name работает так же, как getenv ('USERNAME');

У меня были проблемы с кодированием (с кириллицей) при использовании getenv ('USERNAME')

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