Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <form action="index.php" method="post">
- User: <input type="text" name="user" /><br />
- Password: <input type="password" name="pass" />
- <input type="submit" name="submit" value="Submit" />
- </form>
- <?php
- // Credenciales de prueba
- $user = '';
- $pass = '';
- // Datos de acceso al servidor LDAP
- // $host = "ldaps://ldap.ldap.org";
- $host = 'ldap.ldap.org';
- $port = 389;
- // Atributos a recuperar
- $searchAttr = array("dn", "cn", "sn", "gidnumber");
- // Atributo para incorporar en la respuesta
- $displayAttr = "cn";
- // Respuesta por defecto
- $status = 1;
- $userDisplayName = "null";
- // Recuperar datos del POST
- if (isset($_POST['user'])) {
- $user = $_POST['user'];
- }
- if (isset($_POST['pass'])) {
- $pass = $_POST['pass'];
- }
- $basedn = "cn={$user},ou=users,dc=ldap,dc=ldap,dc=org";
- $ad = ldap_connect($host, $port);
- // Establecer la conexión con el servidor LDAP
- if(!$ad)
- {
- echo "Error en la conexion";
- return false;
- }
- // Autenticar contra el servidor LDAP
- ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3);
- ldap_set_option($ad, LDAP_OPT_REFERALS,0);
- $ldapbind = ldap_bind($ad, $basedn, $pass);
- if ($ldapbind) {
- // En caso de éxito, recuperar los datos del usuario
- $result = ldap_search($ad, $basedn, "(uid={$user})", $searchAttr);
- $entries = ldap_get_entries($ad, $result);
- if ($entries["count"]>0) {
- // Si hay resultados en la búsqueda
- $status = 0;
- if (isset($entries[0][$displayAttr])) {
- // Recuperar el atributo a incorporar en la respuesta
- $userDisplayName = $entries[0][$displayAttr][0];
- // Obtenemos el token de grupo de este usurio
- $token = $entries[0]['gidnumber'][0];
- $basedn = "ou=groups,dc=ldap,dc=org";
- //Buecamos el grupo que tenga el token encontrado en el usuario
- $results2 = ldap_search($ad,$basedn,"(gidnumber={$token})",array("dn","cn","gidnumber"));
- $entries2 = ldap_get_entries($ad, $results2);
- header("Location: {$entries2[0]['cn'][0]}.php");
- }
- else {
- // Si el atributo no está definido para el usuario
- $userDisplayName = "-";
- }
- }
- else {
- // Si no hay resultados en la búsqueda, retornar error
- }
- }
- else {
- // Si falla la autenticación, retornar error
- echo "Error en el bind";
- return false;
- }
- // Respuesta en formato JSON
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement