1

Я хотел бы выполнить аутентификацию на основе сертификата с помощью ldap OPENLDAP.SASL Внешняя аутентификация с UnboundID и сертификатами

Я создал PKI, настроил свой клиент и сервер с хорошими хранилищами ключей, доверенными/сертификатами, ключом. Я также настраиваю LDAP для запроса сертификата во время установления связи SSL.

Затем я попытался проверить подлинность с UnboudID LDAP, как следует:

//Create a unsecured connection 

    LDAPConnection connection = new LDAPConnection(hostname,port); 

    //Secure the connection by the use of SSL (StartTLS operation) 

    SSLUtil ssl = new SSLUtil(new KeyStoreKeyManager(keyStore, new String("somePasword").toCharArray()), 
      new TrustStoreTrustManager(trustStore)); 
    SSLContext sslContext = ssl.createSSLContext(); 
    StartTLSExtendedRequest startTLSRequest = new StartTLSExtendedRequest(sslContext); 
    ExtendedResult startTLSResult = connection.processExtendedOperation(startTLSRequest); 

    //Bind request that should retrieve information from the client certificate and authenticate the client 

    BindRequest bindRequest = new EXTERNALBindRequest(""); 
    BindResult bindResult = connection.bind(bindRequest); 

    //The result is always SUCCESS... 
    if (bindResult.getResultCode() != ResultCode.SUCCESS) { 
     ... 
    } 

Отличительный пользователя Я хочу, чтобы связать соединение соответствует: cn=12345,ou=anOrganizationUnit,o=anOrganization,dc=com,dc=example. Поскольку DN, исходящий из сертификата, выглядит примерно так: cn=12345,ou=...,o=...,l=Berlin,st=some-state,c=de Я также создал правило соответствия в LDAP.

Функция bindRequest всегда преуспевает, как только у меня есть сертификат, подписанный CA. Если DN, исходящий из LDAP, ничего не соответствует LDAP, это не имеет значения. Я предполагаю, что он преобразован в анонимное соединение. Но когда это соответствует существующему пользователю, это также не имеет значения. Пользователь не аутентифицирован и у меня нет доступа к правам пользователя. Я попытался выполнить запрос WhoAmI, и он вернул: authzId = dn:cn=12345,ou=anorganizationunit,o=anorganization,dc=com,dc=example, который кажется хорошим (ну с заглавными буквами, преобразованными в нижний регистр).

Есть ли что-то, что я пропустил в конфигурации LDAP? или это могут быть мои сертификаты?

Я был бы очень благодарен за любую помощь :)

EDIT: Я не знаю, если это помогает, но прежде, чем добавить правило соответствия, я выполнил WHOAMI запрос, и результат был что-то вроде : dn:cn\3D12345\2C...,o=organization,dc=com,dc=example. Общее имя, которое я ввел во время создания сертификата, похоже, было экранировано (\ 3D is "=", \ 2C is ",").

+0

Вам удалось решить проблему? –

ответ

0

Я отвечу на свой вопрос, хотя прошло очень много времени, и я потерял доступ к коду.

Я уверен, что проблема соответствует экранированию части CN. Я помню, что мое совпадающее правило было неправильным, и я думаю, что это была основная причина. Но, честно говоря, могли быть и другие ошибки, которые я не помню.

Смежные вопросы