Я хотел бы выполнить аутентификацию на основе сертификата с помощью 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 ",").
Вам удалось решить проблему? –