Thread View: es.comp.os.linux.programacion
4 messages
4 total messages
Started by Trauma
Sat, 15 Oct 2005 22:36
Problemas con libldap
Author: Trauma
Date: Sat, 15 Oct 2005 22:36
Date: Sat, 15 Oct 2005 22:36
31 lines
2078 bytes
2078 bytes
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Holas
Estoy tonteando con libldap, y estoy atascado en la funci�n ldap_bind_s
( LDAP, DN, PASS ). Siempre me responde con el error 2, error en
protocolo.
El DN est� bi�n, y desde clientes gr�ficos no hay ning�n problema para
entrar.
He probado con el password tal cual, "Pass", y anteponiendo el
indicador de cifrado, tal y como est� en ldap.conf "{CLEARTEXT}Pass".
Ninguna me ha funcionado.
Mi ingl�s no est� muy fuerte, pero, aparentemente, estoy siguiendo al
pi� de la letra las instrucciones de las man, y en Google me han
aparecido muchos manuales completos en espa�ol de ldap bajo php, pero
nada en C.
� Alguna idea sobre donde estoy metiendo la pata ?
Gracias por adelantado.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
iD8DBQFDUYRR6WA6q7P0aeoRAqa1AJ4yCBXX0IeLTRArROeofDChKbXVkgCcDKRs
CrQCO55aPLdrkPw+vP28VOw=
=THr7
-----END PGP SIGNATURE-----
Re: Problemas con libldap
Author: Claudio
Date: Sat, 15 Oct 2005 23:53
Date: Sat, 15 Oct 2005 23:53
37 lines
2130 bytes
2130 bytes
On 2005-10-15, Trauma <trauma@calambre.homeip.net> wrote:
>
> Holas
>
> Estoy tonteando con libldap, y estoy atascado en la funci�n ldap_bind_s
>
> � Alguna idea sobre donde estoy metiendo la pata ?
Pues sin c�digo es dificil. Muy dificil. No solo hay que saber C, hay
que saber ldap y ser adivino. Te cuento, a mi me funciona esto:
$ cat ml.c
#include <stdio.h>
#include <stdlib.h>
#include <ldap.h>
main()
{
LDAP *p;
int i;
p = ldap_init("localhost",389);
if (p== NULL) { exit((int)3);};
i = ldap_bind_s(p,"cn=micommonname,dc=midominio,dc=tld","lapassquemeinvente",LDAP_AUTH_SIMPLE);
if (i!=LDAP_SUCCESS) ldap_perror(p,"ldap");
else puts("lo hice, lo hice!\n");
}
$ ./ml
lo hice, lo hice!
> Gracias por adelantado.
Ya, gracias, gracias... con eso crees que lo arreglas todo... que sepas
que por haberlo puesto tan dificil, si te vale te cobrar� el doble de lo
que es costumbre por estos lares.
Un saludo.
--claduio--
Re: Problemas con libldap
Author: Trauma
Date: Sun, 16 Oct 2005 09:39
Date: Sun, 16 Oct 2005 09:39
91 lines
3924 bytes
3924 bytes
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
El Sat, 15 Oct 2005 23:53:03 +0000 (UTC), Claudio <claudio@example.org>
dijo:
> On 2005-10-15, Trauma <trauma@calambre.homeip.net> wrote:
> >
> > Holas
> >
> > Estoy tonteando con libldap, y estoy atascado en la funci�n ldap_bind_s
> >
> > � Alguna idea sobre donde estoy metiendo la pata ?
> Pues sin c�digo es dificil. Muy dificil. No solo hay que saber C, hay
> que saber ldap y ser adivino. Te cuento, a mi me funciona esto:
Tienes raz�n. Sin el c�digo es dificil, pero es que es para gestionar
autorizaciones de un programa externo, y hay que seguir sus
convenciones para el paso de argumentos a trav�s de la entrada
estandar, por lo que est� lleno de operaciones con cadenas, y la
llamada a ldap_bind no es tan directa. No obstante, ha sido comprobado
justo hasta la llamada, que se realizaba con los argumentos correctos.
>
> $ cat ml.c
> #include <stdio.h>
> #include <stdlib.h>
> #include <ldap.h>
>
> main()
> {
> LDAP *p;
> int i;
> p = ldap_init("localhost",389);
> if (p== NULL) { exit((int)3);};
> i = ldap_bind_s(p,"cn=micommonname,dc=midominio,dc=tld","lapassquemeinvente",LDAP_AUTH_SIMPLE);
> if (i!=LDAP_SUCCESS) ldap_perror(p,"ldap");
> else puts("lo hice, lo hice!\n");
> }
No va. Me dice que estoy usando la versi�n 2 del protocolo, y me pide
la 3.
Mirando en el c�digo fuente de libldap, he encontrado la forma, aunque
aparentemente no est� documentada ( al menos en Debian Sarge ). Hay que
forzar la versi�n 3 del protocolo despu�s de la llamada a ldap_init, y
antes de realizar el bind.
El c�digo quedar�a as�:
#include <stdio.h>
#include <stdlib.h>
#include <ldap.h>
main( ) {
LDAP *p;
int i;
int v = LDAP_VERSION_MAX;
if( ( p = ldap_init( "localhost", 389 ) ) == NULL ) exit( 3 );
if( ldap_set_option( p, LDAP_OPT_PROTOCOL_VERSION, &version ) !=
LDAP_OPT_SUCCESS )
exit( 3 );
i = ldap_bind_s( p,
"cn=micommonname,dc=midominio,dc=tld",
"lapassquemeinvente",
LDAP_AUTH_SIMPLE );
if( i != LDAP_SUCCESS )
ldap_perror( p, "ldap" );
else
puts( "lo hice, lo hice! \n" );
}
Esto no realiza ninguna comprobaci�n de las versiones soportadas por el
servidor. Tan solo utiliza la m�xima con soporte en libldap. De
momento, y para lo que yo lo utilizar�, servir�.
Bueno, muchas gracias. Ya volver� si me surge algo m�s.
Enga, nos leemos.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
iD8DBQFDUh/E6WA6q7P0aeoRAlPQAJ9aaHYfpfb+jSQ9b8g17WZ4W5LqeQCeJ8Lk
ZzklT5tc0lAbcIv6WcNZIbA=
=u+QJ
-----END PGP SIGNATURE-----
Re: Problemas con libldap (CLAVE PGP)
Author: Zephryn Xirdal
Date: Sun, 16 Oct 2005 10:16
Date: Sun, 16 Oct 2005 10:16
100 lines
4133 bytes
4133 bytes
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Oye, quillo, �d�nde est� tu clave pgp, que no me sale por ning�n lado?
Trauma wrote:
> El Sat, 15 Oct 2005 23:53:03 +0000 (UTC), Claudio <claudio@example.org>
> dijo:
>
>
>>>On 2005-10-15, Trauma <trauma@calambre.homeip.net> wrote:
>>>
>>>>Holas
>>>>
>>>>Estoy tonteando con libldap, y estoy atascado en la funci�n ldap_bind_s
>>>>
>>>>� Alguna idea sobre donde estoy metiendo la pata ?
>
>
>>>Pues sin c�digo es dificil. Muy dificil. No solo hay que saber C, hay
>>>que saber ldap y ser adivino. Te cuento, a mi me funciona esto:
>
>
> Tienes raz�n. Sin el c�digo es dificil, pero es que es para gestionar
> autorizaciones de un programa externo, y hay que seguir sus
> convenciones para el paso de argumentos a trav�s de la entrada
> estandar, por lo que est� lleno de operaciones con cadenas, y la
> llamada a ldap_bind no es tan directa. No obstante, ha sido comprobado
> justo hasta la llamada, que se realizaba con los argumentos correctos.
>
>
>>>$ cat ml.c
>>>#include <stdio.h>
>>>#include <stdlib.h>
>>>#include <ldap.h>
>>>
>>>main()
>>> {
>>> LDAP *p;
>>> int i;
>>> p = ldap_init("localhost",389);
>>> if (p== NULL) { exit((int)3);};
>>> i = ldap_bind_s(p,"cn=micommonname,dc=midominio,dc=tld","lapassquemeinvente",LDAP_AUTH_SIMPLE);
>>> if (i!=LDAP_SUCCESS) ldap_perror(p,"ldap");
>>> else puts("lo hice, lo hice!\n");
>>> }
>
>
> No va. Me dice que estoy usando la versi�n 2 del protocolo, y me pide
> la 3.
>
> Mirando en el c�digo fuente de libldap, he encontrado la forma, aunque
> aparentemente no est� documentada ( al menos en Debian Sarge ). Hay que
> forzar la versi�n 3 del protocolo despu�s de la llamada a ldap_init, y
> antes de realizar el bind.
>
> El c�digo quedar�a as�:
>
> #include <stdio.h>
> #include <stdlib.h>
> #include <ldap.h>
>
> main( ) {
> LDAP *p;
> int i;
> int v = LDAP_VERSION_MAX;
>
> if( ( p = ldap_init( "localhost", 389 ) ) == NULL ) exit( 3 );
>
> if( ldap_set_option( p, LDAP_OPT_PROTOCOL_VERSION, &version ) !=
> LDAP_OPT_SUCCESS )
> exit( 3 );
>
> i = ldap_bind_s( p,
> "cn=micommonname,dc=midominio,dc=tld",
> "lapassquemeinvente",
> LDAP_AUTH_SIMPLE );
>
> if( i != LDAP_SUCCESS )
> ldap_perror( p, "ldap" );
> else
> puts( "lo hice, lo hice! \n" );
> }
>
> Esto no realiza ninguna comprobaci�n de las versiones soportadas por el
> servidor. Tan solo utiliza la m�xima con soporte en libldap. De
> momento, y para lo que yo lo utilizar�, servir�.
>
> Bueno, muchas gracias. Ya volver� si me surge algo m�s.
>
> Enga, nos leemos.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (MingW32)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
iD8DBQFDUihjwSATqLEzPfMRAlgJAJ9MAtbH1nEzOJ/+0b76bwNQUkLpqgCeIfZ5
q43InqQDg32bXbjwFYKPHfY=
=joyD
-----END PGP SIGNATURE-----
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads