Advertisement
Guest User

Untitled

a guest
Mar 21st, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.69 KB | None | 0 0
  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. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement