SHARE
TWEET

Untitled

a guest Mar 21st, 2019 92 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <form action="index.php" method="post">
  2.         User: <input type="text" name="user" /><br />
  3.         Password: <input type="password" name="pass" />
  4.         <input type="submit" name="submit" value="Submit" />
  5. </form>
  6.  
  7. <?php
  8. // Credenciales de prueba
  9. $user = '';
  10. $pass = '';
  11.  
  12. // Datos de acceso al servidor LDAP
  13. // $host = "ldaps://ldap.ldap.org";
  14. $host = 'ldap.ldap.org';
  15. $port = 389;
  16.  
  17. // Atributos a recuperar
  18. $searchAttr = array("dn", "cn", "sn", "gidnumber");
  19.  
  20. // Atributo para incorporar en la respuesta
  21. $displayAttr = "cn";
  22.  
  23. // Respuesta por defecto
  24. $status = 1;
  25. $userDisplayName = "null";
  26.  
  27. // Recuperar datos del POST
  28.  
  29. if (isset($_POST['user'])) {
  30.         $user = $_POST['user'];
  31. }
  32. if (isset($_POST['pass'])) {
  33.         $pass = $_POST['pass'];
  34. }
  35.  
  36. $basedn = "cn={$user},ou=users,dc=ldap,dc=ldap,dc=org";
  37.  
  38. $ad = ldap_connect($host, $port);
  39.  
  40. // Establecer la conexión con el servidor LDAP
  41. if(!$ad)
  42. {
  43.         echo "Error en la conexion";
  44.         return false;
  45. }
  46.  
  47. // Autenticar contra el servidor LDAP
  48. ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3);
  49.  
  50. ldap_set_option($ad, LDAP_OPT_REFERALS,0);
  51.  
  52. $ldapbind = ldap_bind($ad, $basedn, $pass);
  53.  
  54. if ($ldapbind) {
  55.         // En caso de éxito, recuperar los datos del usuario
  56.         $result = ldap_search($ad, $basedn, "(uid={$user})", $searchAttr);
  57.         $entries = ldap_get_entries($ad, $result);
  58.         if ($entries["count"]>0) {
  59.                 // Si hay resultados en la búsqueda
  60.                 $status = 0;
  61.                 if (isset($entries[0][$displayAttr])) {
  62.                         // Recuperar el atributo a incorporar en la respuesta
  63.                         $userDisplayName = $entries[0][$displayAttr][0];
  64.  
  65.                         // Obtenemos el token de grupo de este usurio
  66.                         $token = $entries[0]['gidnumber'][0];
  67.  
  68.                         $basedn = "ou=groups,dc=ldap,dc=org";
  69.  
  70.                         //Buecamos el grupo que tenga el token encontrado en el usuario
  71.                         $results2 = ldap_search($ad,$basedn,"(gidnumber={$token})",array("dn","cn","gidnumber"));
  72.                         $entries2 = ldap_get_entries($ad, $results2);
  73.  
  74.                         header("Location: {$entries2[0]['cn'][0]}.php");
  75.                 }
  76.                 else {
  77.                         // Si el atributo no está definido para el usuario
  78.                         $userDisplayName = "-";
  79.                 }
  80.         }
  81.         else {
  82.                 // Si no hay resultados en la búsqueda, retornar error
  83.         }
  84. }
  85. else {
  86.         // Si falla la autenticación, retornar error
  87.         echo "Error en el bind";
  88.         return false;
  89. }
  90.  
  91. // Respuesta en formato JSON
  92.  
  93.  
  94. ?>
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top