Authentication using control and ldap

hi i’m new in scriptcase… i’ve tried to do a login with application of control and ldap… i read about using the PHP functions and code in the onValidate Event, but i don’t know how to do this… anyone can help me
Thanks

Re: Authentication using control and ldap

I just learn how to do it… I’ve created a library with a function called “verifica_login()” wich connects to ldap server and I’ve used to in an application of control in the onValidate Events… as follows

ldap_conect.php - Conexion con LDAP


 0| <?php
 1|
 2|
 3| function verifica_login($usuario, $password) {
 4|   $res = array(
 5|     'success' => false
 6|   );
 7|   $ldap = ldap_connect("<ldap server>");
 8|   if (!$ldap) {
 9|     $res['errors'] = array(
10|       'reason' => 'No es posible conectar al servidor ldap'
11|     );
12|     return $res;
13|   }
14|   /* bind anonimo */
15|   $conectado = @ldap_bind($ldap);
16|   if ($conectado !== TRUE) {
17|     $res['errors'] = array(
18|       'reason' => 'No es posible conectar al servidor ldap (anonimo)'
19|     );
20|     return $res;
21|   }
22|   /*     */
23|   $filtro = "(uid=" . $usuario . ")";
24|   $base = "ou=<ou description>,dc=<dc descriptcion>";
25|
26|   $search = ldap_search($ldap, $base, $filtro, array('dn', 'displayName'));
27|   $info = ldap_get_entries($ldap, $search);
28|
29|   
30|   if (@$info['count'] != 1) {
31|     $res['errors'] = array(
32|       'reason' => 'No puede iniciar sesion. Verifique que su usuario y contrase?a sean correctos..'
33|     );
34|     return $res;
35|   }
36|   /* usuario fue encontrado */
37|   $dn = $info[0]['dn'];
38|   $conectado = @ldap_bind($ldap, $dn, $password);
39|   if ($conectado === TRUE) {
40|     $res['success'] = true;
41|     $res['usuario'] = $usuario;
42|     $res['descripcion'] = isset($info[0]) && isset($info[0]['displayname']) ? $info[0]['displayname'][0] : '';
43|   }
44|   else {
45|     $res['errors'] = array(
46|       'reason' => 'No puede iniciar sesion. Verifique que su usuario y contrase?a sean correctos.'
47|     );
48|   }
49|   ldap_close($ldap);
50|   return $res;
51| }
52|
53| ?>


and in the onValidate Event

// Redirection parameters
$res = verifica_login({user}, {pass});
$redir_app  = 'grid_co_referencial';         // Application name
$redir_target = '_self';         // Target window (_blank, _self, _parent or modal)
$redir_param = array(           // Param list, add as many as needed
	'param_1' => 'value_1',
    'param_2' => 'value_2',
);

// Redirection
if($res["success"]==true) {
  sc_redir($redir_app, $redir_param, $redir_target);
}

Re: Authentication using control and ldap

Thanks for posting your solution.

Regards,
Scott.

i try this answer, but did’nt work…
the output “Fatal error: Call to undefined function ldap_connect() in”.
but i sure in my server LDAP is enable…
please help me… :smiley:

[QUOTE=RSOTO;5784]I just learn how to do it… I’ve created a library with a function called “verifica_login()” wich connects to ldap server and I’ve used to in an application of control in the onValidate Events… as follows

ldap_conect.php - Conexion con LDAP


 0| <?php
 1|
 2|
 3| function verifica_login($usuario, $password) {
 4|   $res = array(
 5|     'success' => false
 6|   );
 7|   $ldap = ldap_connect("<ldap server>");
 8|   if (!$ldap) {
 9|     $res['errors'] = array(
10|       'reason' => 'No es posible conectar al servidor ldap'
11|     );
12|     return $res;
13|   }
14|   /* bind anonimo */
15|   $conectado = @ldap_bind($ldap);
16|   if ($conectado !== TRUE) {
17|     $res['errors'] = array(
18|       'reason' => 'No es posible conectar al servidor ldap (anonimo)'
19|     );
20|     return $res;
21|   }
22|   /*     */
23|   $filtro = "(uid=" . $usuario . ")";
24|   $base = "ou=<ou description>,dc=<dc descriptcion>";
25|
26|   $search = ldap_search($ldap, $base, $filtro, array('dn', 'displayName'));
27|   $info = ldap_get_entries($ldap, $search);
28|
29|   
30|   if (@$info['count'] != 1) {
31|     $res['errors'] = array(
32|       'reason' => 'No puede iniciar sesion. Verifique que su usuario y contrase?a sean correctos..'
33|     );
34|     return $res;
35|   }
36|   /* usuario fue encontrado */
37|   $dn = $info[0]['dn'];
38|   $conectado = @ldap_bind($ldap, $dn, $password);
39|   if ($conectado === TRUE) {
40|     $res['success'] = true;
41|     $res['usuario'] = $usuario;
42|     $res['descripcion'] = isset($info[0]) && isset($info[0]['displayname']) ? $info[0]['displayname'][0] : '';
43|   }
44|   else {
45|     $res['errors'] = array(
46|       'reason' => 'No puede iniciar sesion. Verifique que su usuario y contrase?a sean correctos.'
47|     );
48|   }
49|   ldap_close($ldap);
50|   return $res;
51| }
52|
53| ?>


and in the onValidate Event

// Redirection parameters
$res = verifica_login({user}, {pass});
$redir_app  = 'grid_co_referencial';         // Application name
$redir_target = '_self';         // Target window (_blank, _self, _parent or modal)
$redir_param = array(           // Param list, add as many as needed
	'param_1' => 'value_1',
    'param_2' => 'value_2',
);

// Redirection
if($res["success"]==true) {
  sc_redir($redir_app, $redir_param, $redir_target);
}

[/QUOTE]

You must enable the ldap login in php, it is not probably not enabled. Check your php.ini.
Seach for ;extension=php_ldap.dll and remove the ; in front.

You must enable the ldap dll in php, it is not probably not enabled. Check your php.ini.
Seach for ;extension=php_ldap.dll and remove the ; in front.