openldap訪問AD的問題
linux下的client訪問windows的AD,程序如下:
#include <stdio.h>
#include <stdlib.h>
#include <ldap.h>
main()
{
LDAP *ld;
LDAPMessage *res, *e;
int i;
char *a, *dn;
void *ptr;
char **vals;
char *server = "192.168.1.161";
int group = 0, user = 0;
char *gname;
int gcount = 0, ucount = 0;
int j;
const char *attr[]={
"name",
"member",
NULL
};
if ( (ld = ldap_open( server, LDAP_PORT )) == NULL )
exit( 1 );
if ( ldap_simple_bind_s( ld, "test", "111222333") != LDAP_SUCCESS )
{
ldap_perror( ld, "ldap_simple_bind_s" );
exit( 1 );
}
if (ldap_search_s(ld, "ou=test,dc=cu,dc=com", LDAP_SCOPE_SUBTREE, NULL, NULL, 0, &res) != LDAP_SU
CCESS)
{
ldap_perror( ld, "ldap_search_s" );
exit( 1 );
}
for ( e = ldap_first_entry( ld, res ); e != NULL; e = ldap_next_entry( ld, e ) )
{
dn = ldap_get_dn( ld, e );
printf( "dn: %s\n", dn );
free( dn );
for ( a = ldap_first_attribute( ld, e, (BerElement **)&ptr ); a != NULL; a = ldap_next_attribute( ld, e, (BerElement *)ptr )
)
{
printf("attribute[%s]:", a);
vals = ldap_get_values( ld, e, a );
for ( i = 0; vals != NULL; i++ )
{
printf("%s\n",vals);
}
ldap_value_free( vals );
}
}
ldap_msgfree( res );
ldap_unbind( ld );
}
可以得到所有在ou=test中的用戶,但是我想得到所有ou裡面的用戶,我把程序改為:
if (ldap_search_s(ld, "ou=test,dc=cu,dc=com", LDAP_SCOPE_SUBTREE, NULL, NULL, 0, &res) != LDAP_SU
CCESS)
改為:
if (ldap_search_s(ld, "dc=cu,dc=com", LDAP_SCOPE_SUBTREE, NULL, NULL, 0, &res) != LDAP_SU
CCESS)
會一直在這裡阻塞,但是利用tcpdump抓包看到AD已經把所有的ou信息發送給了client,這是為什麼呢?
[火星人
]
openldap訪問AD的問題已經有412次圍觀
http://coctec.com/docs/service/show-post-36317.html