サーバーに匿名で接続した後、人々に関する情報を取得する方法。
次のように、匿名でバインドされたldapサーバーに uid=barbara を検索しています。
エラーが出ます、
LDAP initialize successful.
Set LDAPv3 client version.
LDAP connection successful.
ldap_search_ext_s: No such object
if i chnage char *FIND_DN = " ou=Users,dc=example,dc=com";
rc = ldap_simple_bind_s(ld,root_dn,root_pw); それは正常に動作します。
以下のコード:
int main(int argc, char**argv) 
{
 LDAP *ld;
 int desired_version = LDAP_VERSION3;
 char *ldap_host     = "localhost";
 char *root_dn       = "cn=Manager, dc=example,dc=com";
 char *root_pw       = "secret";
 char *FIND_DN  = "dc=example, dc=com";
 LDAPMessage  *result, *e;
 BerElement   *ber;
 char         *a;
 char         **vals;
 int          i, rc;
 ldap_initialize( &ld, ldap_host );
 printf("LDAP initialize successful.\n");
 rc = ldap_set_option(ld, LDAP_OPT_PROTOCOL_VERSION, &desired_version);
 if ( rc != LDAP_SUCCESS ) {
    perror( "ldap_set_option failed" );
    exit(EXIT_FAILURE);
 } else {
    printf("Set LDAPv3 client version.\n");
 }
 rc = ldap_simple_bind_s(ld,NULL ,NULL);
 if ( rc != LDAP_SUCCESS ) {
    fprintf(stderr, "ldap_simple_bind_s: %s\n", ldap_err2string(rc));
    exit(EXIT_FAILURE);
 } else {
    printf("LDAP connection successful.\n");
 }
 if ( ( rc = ldap_search_ext_s( ld, FIND_DN, LDAP_SCOPE_SUBTREE,
                                "(uid=barbara)",NULL,0,NULL,NULL,NULL,
                                LDAP_NO_LIMIT, &result ) ) != LDAP_SUCCESS ) {
     fprintf(stderr, "ldap_search_ext_s: %s\n", ldap_err2string(rc));
     ldap_unbind( ld );
     return( 1 );
 }
 ldap_msgfree( result );
 ldap_unbind( ld );
 return( 0 );
}
ldapsearch コマンドで、私は得る
LDAP パスワードを入力してください: # ユーザー、example.com dn: ou=ユーザー,dc=例,dc=com ou: ユーザー 説明: Example.Com ユーザー objectClass: 組織単位 # マット、ユーザー、example.com dn: uid=matt,ou=ユーザー,dc=例,dc=com ou: ユーザー uid: マット cn: マット・ブッチャー sn: ブッチャー 名: マット 名: マシュー displayName: マット・ブッチャー 役職: システム インテグレーター 説明: Example.Com のシステム統合と IT 従業員タイプ: 従業員 部門番号: 001 従業員番号: 001-08-98 メール: mbutcher@example.com メール: matt@example.com 部屋番号: 301 電話番号: +1 555 555 4321 モバイル: +1 555 555 6789 st: イリノイ州 l: シカゴ 通り: 1234 シセロ アベニュー。 自宅電話: +1 555 555 9876 homePostalAddress: 1234 ホーム ストリート $ シカゴ、イリノイ州 $ 60699-1234 ユーザーパスワード:: c2VjcmV0 優先言語: en-us、en-gb objectClass: 人 objectClass: organizationPerson objectClass: inetOrgPerson # バーバラ、ユーザー、example.com dn: uid=barbara,ou=ユーザー,dc=例,dc=com ou: ユーザー uid: バーバラ sn: ジェンセン cn: バーバラ・ジェンセン 名: バーバラ 表示名: バーバラ・ジェンセン メール: barbara@example.com ユーザーパスワード:: c2VjcmV0 objectClass: 人 objectClass: organizationPerson objectClass: inetOrgPerson # 検索結果 検索: 2 結果: 0 成功 # numResponses: 4 # numEntries: 3