2017-12-21 19 views
0

私は、LDAP設定を使用してアプリケーションにログインできるようにするアプリケーションを作成しています。スタートTLS/LDAPSをサポートしていない サンプルプログラム:LDAPにStartTLSとLDAPSオプションを追加しているときにクライアント証明書を確認する

#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がldap_start_tls_s機能を用いて実現することができます。しかし、私は接続を許可する前に証明書を確認したい。助言がありますか?

答えて

1

StarTLSは拡張LDAP操作であり、接続を確立した後に送信する必要があります。ただし、サーバー証明書またはクライアント証明書の検証は、TLSプロトコルの一部です。したがって、ldap_start_tls_s関数を使用すると、自動的に実行されます。

接続時にサーバー証明書を確認する場合は、LDAP over SSLを使用し、LDAPSポートに接続する必要があります。そのためにldap_sslinit()メソッドを使用することができます。

関連する問題