2017-12-21 7 views
0

ich eine Anwendung schreibe, die Benutzer auf die App mithilfe von LDAP-Einstellungen anmelden können. Beispielprogramm ohne Start TLS/LDAPS-Unterstützung:Überprüfen der Client-Zertifikat während StartTLS und LDAPS Option in LDAP Hinzufügen

#include <windows.h> 
#include <winldap.h> 

int main(){ 
    LDAP *ldap =NULL; 
    int returnCode = -1; 
    int version = LDAP_VERSION3; 

    ldap = ldap_init(hostName, PORT); 
    if (ldap == NULL) { 
     printf("Failed to init LDAP connection"); 
     return FALSE; 
    } 

    returnCode = ldap_set_option(ldap, LDAP_OPT_PROTOCOL_VERSION, (void*)&version); 
    if (returnCode != LDAP_SUCCESS) { 
     cout<<"LDAP: Could not set options. Error: "<< returnCode <<" "<< ldap_err2string(returnCode); 
     ldap_unbind(ldap); 
     return FALSE; 
    } 

    returnCode = ldap_connect(ldap, NULL); 
    if (returnCode != LDAP_SUCCESS) { 
     printf("LDAP: Could not establish connection. Error: %d %s", returnCode, ldap_err2string(returnCode)); 
     ldap_unbind(ldap); 
     return FALSE; 
    } 

    returnCode = ldap_bind_s(ldap, binddn, bindpwd, LDAP_AUTH_SIMPLE); 
    if (returnCode != LDAP_SUCCESS) { 
     printf("LDAP: Could not establish connection. Error: %d %s", returnCode, ldap_err2string(returnCode)); 
     ldap_unbind(ldap); 
     return FALSE; 
    } 
} 

StartTLS umgesetzt werden können ldap_start_tls_s Funktion. Aber ich möchte das Zertifikat vor dem Zulassen der Verbindungen überprüfen. Irgendwelche Vorschläge?

Antwort

1

Der StarTLS ist ein erweiterter LDAP-Vorgang und muss gesendet werden, nachdem Sie die Verbindung hergestellt haben. Die Server- und/oder Clientzertifikatüberprüfungen sind jedoch Teil des TLS-Protokolls. Wenn Sie also die Funktion ldap_start_tls_s verwenden, wird sie automatisch ausgeführt.

Wenn Sie das Serverzertifikat zum Zeitpunkt der Verbindung überprüfen möchten, sollten Sie LDAP über SSL verwenden und eine Verbindung zum LDAPS-Port herstellen. Sie können dafür die Methode ldap_sslinit() verwenden.

Verwandte Themen