2013-05-13 120 views
1

我正在編寫一個程序,該程序將連接到在端口10389上運行的LDAP服務器。我能夠使用用戶dn和密碼成功綁定到服務器。使用「ldaps」綁定到ldap服務器

這裏是我的示例程序:

#include "windows.h" 
#include "winldap.h" 
#include "stdio.h" 

int main(int argc, char* argv[]) 
{ 
    LDAP* pLdapConnection = NULL; 
    ULONG version = LDAP_VERSION3; 
    ULONG connectSuccess = 0; 
    INT returnCode = 0; 

    pLdapConnection = ldap_init("localhost", 10389); 

    if (pLdapConnection == NULL) 
    { 
     printf("ldap_init failed"); 
     goto error_exit; 
    } 
    else 
     printf("ldap_init succeeded \n"); 

    // Set the version to 3.0 (default is 2.0). 
    returnCode = ldap_set_option(pLdapConnection, 
           LDAP_OPT_PROTOCOL_VERSION, 
           (void*)&version); 

    if(returnCode != LDAP_SUCCESS) 
    { 
     printf("SetOption Error:%0X\n", returnCode); 
     goto error_exit; 
    } 

    // Connect to the server. 
    connectSuccess = ldap_connect(pLdapConnection, NULL); 

    if(connectSuccess == LDAP_SUCCESS) 
     printf("ldap_connect succeeded \n"); 
    else 
    { 
     printf("ldap_connect failed with 0x%x.\n",connectSuccess); 
     goto error_exit; 
    } 

    printf("Binding ...\n"); 

    returnCode = ldap_bind_s(pLdapConnection, "dc=mojo,dc=com", "mojo", LDAP_AUTH_SIMPLE); 

    if (returnCode == LDAP_SUCCESS) 
     printf("The bind was successful"); 
    else{ 
     printf("ldap_bind_s failed with 0x%x.\n",returnCode); 
     goto error_exit; 
    } 

    // Cleanup and exit. 
    ldap_unbind(pLdapConnection); 
    return 0; 

    // On error cleanup and exit. 
    error_exit: 
     ldap_unbind(pLdapConnection); 
     return -1; 
} 

如何通過 「ldaps://」 連接? LDAPS服務器監聽端口10636.

enter image description here

什麼是需要我的程序在端口10636連接到「LDAPS」?

回答

1

LDAPS是一種用於通過SSL隧道連接到ldap的協議。這意味着您必須啓動一個SSL會話(或者TLS,具體取決於ldap版本),然後使用您的ldap協議連接到服務器。

這裏是Windows LDAPS協議:http://support.microsoft.com/kb/938703