Czy możesz uzyskać nazwę Użytkownika Windows (AD) w PHP?

Mam aplikację internetową PHP w intranecie, która może wyodrębnić adres IP i nazwę hosta bieżącego użytkownika na tej stronie, ale zastanawiałem się, czy jest sposób, aby uzyskać/wyodrębnić ich nazwę Użytkownika Active Directory/Windows, jak również. Czy to możliwe?

Author: fuentesjr, 2008-10-03

15 answers

Sprawdź zmienną AUTH_USER request. Ta opcja będzie pusta, jeśli Twoja aplikacja internetowa umożliwia dostęp anonimowy, ale jeśli serwer korzysta z uwierzytelniania podstawowego lub zintegrowanego systemu Windows, będzie ona zawierać nazwę użytkownika uwierzytelnionego użytkownika.

W domenie Active Directory, jeśli twoi klienci korzystają z programu Internet Explorer, a uprawnienia serwera WWW/systemu plików są skonfigurowane poprawnie, IE po cichu prześle swoje poświadczenia domeny do twojego serwera i AUTH_USER będzie MYDOMAIN\user.name bez konieczności używania przez użytkowników aby jawnie zalogować się do aplikacji internetowej.

 39
Author: Dylan Beattie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-11 04:38:17

Mam PHP mysql uruchomiony na IIS-mogę użyć $_SERVER["AUTH_USER"] Jeśli włączam uwierzytelnianie systemu Windows w IIS - > uwierzytelnianie i wyłączam uwierzytelnianie anonimowe (ważne)

Użyłem tego, aby uzyskać mojego użytkownika i domenę:

$user = $_SERVER['AUTH_USER'];

$user zwróci wartość np.: DOMAIN\username w naszej sieci, a następnie będzie to tylko przypadek usunięcia DOMAIN\ z ciągu znaków.

To działa w IE, FF, Chrome, Safari (testowane) do tej pory.

 10
Author: Schwarz.Oz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-11 04:30:34

Spójrz na funkcje biblioteki PHP LDAP: http://us.php.net/ldap .

Active Directory [głównie] jest zgodny ze standardem LDAP.

 4
Author: warren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-03 19:57:39

Jeśli używasz Apache w systemie Windows, możesz zainstalować mod_auth_sspi z

Http://www.gknw.at/development/apache/httpd-2.2/win32/modules/mod_auth_sspi-1.0.4-2.2.2.zip

Instrukcje są w pliku instalacyjnym i jest whoami.przykład php. (To tylko przypadek skopiowania mod_auth_sspi.so plik do folderu i dodanie linii do httpd.conf.)

Po zainstalowaniu i dokonaniu niezbędnych ustawień w httpd.conf do ochrony katalogów, które jeśli chcesz, PHP wypełni $_SERVER['REMOTE_USER'] z użytkownikiem i domeną ('USER\DOMAIN') uwierzytelnionego użytkownika w IE -- lub poprosi i uwierzytelni w Firefoksie przed przekazaniem go.

Info jest oparte na sesji, więc pojedynczy (ish) signon jest możliwy nawet w Firefoksie...

-Craig

 3
Author: CrayFishUK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-24 12:02:58

Mógłbyś prawdopodobnie uwierzytelnić użytkownik w Apache z mod_auth_kerb wymagając uwierzytelnionego dostępu do niektórych plików ... myślę, że w ten sposób nazwa użytkownika powinna być również dostępna w zmiennych środowiskowych PHP gdzieś ... prawdopodobnie najlepiej sprawdzić za pomocą <?php phpinfo(); ?> po uruchomieniu.

 2
Author: hangy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-03 20:13:08

Nie. Ale to, co możesz zrobić, to pozwolić administratorowi Active Directory włączyć LDAP, aby użytkownicy mogli zachować jeden zestaw poświadczeń

Http://us2.php.net/ldap

 1
Author: Peter Bailey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-03 19:56:55

Sprawdź poprawiony moduł uwierzytelniania NTLM dla Apache https://github.com/rsim/mod_ntlm

Oparty na module NTLM auth dla Apache / Unix http://modntlm.sourceforge.net/

Czytaj więcej na http://blog.rayapps.com/

Źródło: http://imthi.com/blog/programming/leopard-apache2-ntlm-php-integrated-windows-authentication.php

 1
Author: blomman9,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-26 06:49:35

Jeśli szukasz zdalnego identyfikatora użytkownika / nazwy użytkownika, Użyj:

echo gethostbyaddr($_SERVER['REMOTE_ADDR']);

Dostaniesz coś w rodzaju iamuser1-mys.corp.company.com

Filtruj resztę domeny za, a będziesz mógł uzyskać tylko idsid.

Aby uzyskać więcej informacji odwiedź http://lostwithin.net/how-to-get-users-ip-and-computer-name-using-php/

 1
Author: Eddy Goh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-21 08:29:50

Możesz powiedzieć getenv('USERNAME')

 1
Author: Someone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-07 14:51:30

Get_user_name działa tak samo jak getenv ('nazwa użytkownika');

Miałem problemy z kodowaniem (cyrylicą) używając getenv ('USERNAME')

 0
Author: Kornilov Ruslan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-24 07:58:04

Odwołanie próbuje również dowiedzieć się, czy AUTH_USER jest częścią określonej grupy domen; sprytnym sposobem na to jest utworzenie zablokowanego folderu z plikami tekstowymi (może być pusty). Ustaw security na Grupę security/distro, którą chcesz zweryfikować. Po uruchomieniu @file_get_contents (

 0
Author: George,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-16 12:52:03

Mamy wiele domen w naszym środowisku, więc używam preg_replace z regex, aby uzyskać tylko nazwę Użytkownika bez domeny\ .

preg_replace("/^.+\\\\/", "", $_SERVER["AUTH_USER"]);
 0
Author: GMR,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-28 22:06:29

Jest to prosty przykład integracji NTLM AD, umożliwia jednokrotne logowanie za pomocą Internet Explorera, wymaga logowania/konfiguracji w innych przeglądarkach.

Przykład PHP

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

?>

W Twoim Apache httpd.plik 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>

A jeśli potrzebujesz modułu, ten link jest przydatny:

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

 0
Author: PodTech.io,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-28 11:50:32

Wypróbuj ten kod:

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

Otrzymujesz nazwę Użytkownika windows (AD) w php

 -2
Author: UserHelpNeeding02356,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-07 16:21:20

Próbowałem prawie wszystkich tych sugestii, ale wszystkie zwracały puste wartości. Jeśli ktoś jeszcze ma ten problem, znalazłem tę przydatną funkcję na php.net ( http://php.net/manual/en/function.get-current-user.php):

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

To był jedyny sposób, w jaki udało mi się w końcu uzyskać nazwę użytkownika active directory. Jeśli żadna z powyższych odpowiedzi nie zadziałała, spróbuj.

 -2
Author: Purple Lady,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-19 20:31:51