Tengo una aplicación web PHP en una intranet que puede extraer la IP y el nombre de host del usuario actual en esa página, pero me preguntaba si también hay una forma de obtener/extraer su nombre de usuario de Active Directory/Windows. es posible?¿Se puede obtener un nombre de usuario de Windows (AD) en PHP?
Respuesta
Compruebe la variable AUTH_USER
petición. Esto estará vacío si su aplicación web permite el acceso anónimo, pero si su servidor está usando autenticación básica o integrada de Windows, contendrá el nombre de usuario del usuario autenticado.
En un dominio de Active Directory, si sus clientes están ejecutando Internet Explorer y sus web permisos de servidor/sistema de ficheros están configurados correctamente, IE silencio presenten sus credenciales de dominio a su servidor y AUTH_USER
habrá MYDOMAIN\user.name
sin que los usuarios tengan que conectarse de forma explícita en tu aplicación web
Pero lo que puede hacer es tener el administrador de Active Directory LDAP permite que los usuarios puedan mantener un conjunto de credenciales
Usted don' t tiene que habilitar LDAP porque es un componente central de Active Directory. – VVS
Mire las funciones de la biblioteca PHP LDAP: http://us.php.net/ldap.
Active Directory [principalmente] se ajusta al estándar LDAP.
Hay algunas bibliotecas PEAR adicionales que pueden hacer las cosas más fáciles:
que probablemente podría authenticate theuser in Apache con mod_auth_kerb al requerir acceso autenticado a algunos archivos ... Creo que de esa manera, el nombre de usuario debe ser también disponible en variables de entorno de PHP en alguna parte ... probablemente sea mejor consultar con <?php phpinfo(); ?>
una vez que lo ejecutas.
Si está utilizando Apache en Windows, puede instalar el mod_auth_sspi de
http://www.gknw.at/development/apache/httpd-2.2/win32/modules/mod_auth_sspi-1.0.4-2.2.2.zip
instrucciones están en el archivo INSTALL, y hay un ejemplo whoami.php. (Solo se trata de copiar el archivo mod_auth_sspi.so en una carpeta y agregar una línea en httpd.conf.)
Una vez que está instalado y se realizan las configuraciones necesarias en httpd.conf para proteger los directorios que desea, PHP poblará el $_SERVER['REMOTE_USER']
con el usuario y el dominio ('USER \ DOMAIN') del usuario autenticado en IE, o le pedirá y autenticará en Firefox antes de pasarlo.
La información está basada en sesiones, por lo que solo (ish) firmar es posible incluso en Firefox ...
-Craig
Enlace roto, corregir con: http://sourceforge.net/projects/mod-auth-sspi/ – PiTheNumber
Se puede decir getenv('USERNAME')
Pero necesita instalar un módulo Apache para usar esta función. 'apt-get install libapache2-authenntlm-perl' – SatanicGeek
Esto solo le dará el nombre de la Computadora. – Mike
Tengo PHP MySQL se ejecuta en IIS - Puedo utilizar $_SERVER["AUTH_USER"]
si enciendo la autenticación de Windows en IIS -> Autenticación y desactivar la autenticación anónima (importante)
he utilizado esto para conseguir mi usuario y el dominio:
$user = $_SERVER['AUTH_USER'];
$user
devolverá un valor como: DOMAIN\username
en nuestra red, y luego solo se eliminará el DOMAIN\
de la cadena.
Esto ha funcionado en IE, FF, Chrome, Safari (probado) hasta el momento.
Tengo php ejecutándose en IIS y solo la Autenticación de Windows habilitada para este sitio. No tengo esta información. ¿Qué podría volver a verificar? – manou
Salida módulo de autenticación NTLM parcheada para Apache https://github.com/rsim/mod_ntlm
acuerdo con el módulo de autenticación NTLM para Apache/Unix http://modntlm.sourceforge.net/
Lea más en http://blog.rayapps.com/
Fuente: http://imthi.com/blog/programming/leopard-apache2-ntlm-php-integrated-windows-authentication.php
obras get_user_name de la misma manera que getenv ('USERNAME');
tuve codificación (con cirílico) problemas usando getenv (USERNAME)
Si usted está buscando para la recuperación remota IDSID de usuario/nombre de usuario, utilice:
echo gethostbyaddr($_SERVER['REMOTE_ADDR']);
Va a conseguir algo como iamuser1-mys.corp.company.com
Filtra el resto del dominio y solo puedes obtener el IDSID.
Para más información visite http://lostwithin.net/how-to-get-users-ip-and-computer-name-using-php/
referencia a tratar de averiguar si también AUTH_USER es parte de un grupo de dominio en particular; una forma inteligente de hacerlo es t crear una carpeta bloqueada con archivos de texto (puede estar en blanco). Configure la seguridad para que solo tenga el grupo de seguridad/distribución que desea validar. Una vez que ejecute @file_get_contents (< --- arrojará una advertencia) ... si el usuario no tiene acceso de grupo, no podrá obtener el contenido del archivo y, por lo tanto, no tendrá acceso a ese grupo de AD en particular. Esto es simple y funciona maravillosamente.
Tenemos varios dominios en nuestro entorno, así que uso preg_replace con regex para obtener solo el nombre de usuario sin DOMAIN \.
preg_replace("/^.+\\\\/", "", $_SERVER["AUTH_USER"]);
prueba este código:
$user= shell_exec("echo %username%");
echo "user : $user";
que obtenga su ventanas (AD) nombre de usuario en php
Esto solo le dará el nombre de Computadora – Katia
Probé casi todas estas sugerencias, pero todos estaban devolviendo valores vacíos.Si alguien más tiene este problema, he encontrado esta función útil en php.net (http://php.net/manual/en/function.get-current-user.php):
get_current_user();
$username = get_current_user();
echo $username;
Ésta era la única forma que finalmente fue capaz de conseguir nombre de usuario de Active Directory del usuario. Si ninguna de las respuestas anteriores ha funcionado, pruébelo.
Creo que de esta manera usted obtiene al usuario que está ejecutando su PHP en el servidor y no al usuario que ha iniciado sesión en su máquina y envía una solicitud desde un navegador web a su página PHP . En este caso, es posible que tenga un agujero de seguridad grave, ya que su página PHP se está ejecutando como un usuario completamente diferente con diferentes permisos. – JustAMartin
@JustAMartin He estado probando esto durante los últimos meses, y constantemente recibo al usuario que está conectado en la máquina y accediendo al sitio web generado por mi PHP, y no al revés. –
Este es un ejemplo simple de integración NTLM AD, permite el inicio de sesión único con Internet Explorer, requiere inicio de sesión/configuración en otros navegadores.
PHP Ejemplo
<?php
$user = $_SERVER['REMOTE_USER'];
$domain = getenv('USERDOMAIN');
?>
En su archivo httpd.conf de Apache
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>
Y si necesita el módulo, este enlace es útil:
- 1. Autenticación de usuario AD
- 2. Obtener nombre de usuario de URL en PHP
- 3. ¿Recibe el nombre de usuario de Windows del usuario actual que usa php?
- 4. Cómo leer el nombre de usuario registrado de Windows con PHP/IIS
- 5. URL amigable nombre de usuario en PHP?
- 6. Nombre de usuario de Windows longitud máxima
- 7. Autenticación de Windows solicita nombre de usuario/contraseña
- 8. ¿Cómo obtengo el nombre del usuario actual de Windows en formato de nombre de usuario @ dominio?
- 9. Obtenga el nombre de usuario actual en C++ en Windows
- 10. ¿Cómo puedo obtener DOMAIN \ USER desde AD DirectoryEntry?
- 11. ¿Puede obtener un nombre de método dentro de un método en PHP?
- 12. C# Active Directory: ¿Obtener el nombre de dominio del usuario?
- 13. Cómo obtener un nombre de usuario sin dominio
- 14. Obtener el nombre de usuario en la autenticación de formularios
- 15. ¿Cómo obtener todos los grupos de AD para un usuario en particular?
- 16. no puede recuperar nombre de usuario del usuario en hubot
- 17. ¿Puede wix solicitar un nombre de usuario/contraseña del servicio de Windows?
- 18. Cómo obtener un nombre de usuario y SID para el usuario por un nombre de dominio en ldap
- 19. C++ Obtener nombre de usuario Proceso De
- 20. Cómo obtener detalles del usuario en asp.net Autenticación de Windows
- 21. No se puede obtener php display_errors habilitado
- 22. ¿Puede un usuario alterar el valor de $ _SESSION en PHP?
- 23. Buscar el nombre de usuario de Windows dentro de R
- 24. ¿Cómo puede obtener un certificado de código en Windows Azure
- 25. Git cli: obtener información de usuario del nombre de usuario
- 26. C# .Net aplicación de Windows - Obtener el nombre de usuario registrado en Mi NT
- 27. Obtener el nombre de usuario conectado en C#
- 28. Regex nombre de usuario
- 29. Dado el SID de un usuario, ¿cómo puedo obtener AD DirectoryEntry?
- 30. Obtener nombre de usuario de inicio de sesión en java
es una pena que solo funciona con IE – Simurr
solo IE pasa sus credenciales, otros navegadores solo solicitan, en cuyo caso solo necesita proporcionar sus credenciales de dominio (dominio \ nombre de usuario y contraseña). – CodeMonkey1313
Firefox también admite la autenticación integrada (automática). ver https://developer.mozilla.org/en/Integrated_Authentication – VolkerK