У меня есть веб-приложение, работающее на Tomcat 9 и использующее LDAPS для аутентификации пользователя. Когда я подключаюсь через LDAP (небезопасный), аутентификация проходит успешно, но когда я переключаюсь на LDAPS (Secure), я получаю сообщение «PenLdapLookupModule: Ошибка аутентификации во время поиска. Пожалуйста, проверьте имя пользователя и пароль, используемые для входа в LDAP». Тем не менее, я использую те же имя пользователя и пароль в незашифрованном виде в приложении.
Конфигурация Tomcat (Server.xml)
<Realm className="org.apache.catalina.realm.JNDIRealm"
debug="99"
connectionURL="ldaps://ldapservername:636"
authentication="simple"
connectionName="<username>"
connectionPassword="<password>"
userSearch="(sAMAccountName={0})"
userBase="dc=com"
userSubtree="true"
userRoleName="memberOf"
roleBase="ou=Global Security Groups,ou=Security Groups,ou=Domain Groups,dc=directory,dc=com"
roleSearch="(member={0})"
roleSubtree="true"
roleName="cn"
/>
Конфигурации LDAP приложений
setconfig ldap.ssl.trustStore.type "JKS"
setconfig ldap.ssl.trustStore.location "ldapsKeystorename.jks"
setconfig ldap.ssl.trustStore.password "<Keystorepassword>"
Журналы
ERROR [LookupRefresh] (PenLdapLookupModule) - PenLdapLookupModule: Error authenticating during a lookup. Please check the username and password used to log into LDAP. If encryption is enabled you may need to reset the password (to its plain text value) if the application software has changed. com.paisley.core.FaultException: FAULT -- DETAILS BELOW Error authenticating during a lookup. Please check the username and password used to log into LDAP. If encryption is enabled you may need to reset the password (to its plain text value) if the application software has changed. Thread name: LookupRefresh - 0x2b Occurred on/at: 4/8/21 12:25:01 PM SAST Session Client ID: Group Name: Client ID: com.paisley.foundation.client.ClientID@8e812e86-client001 Module Name: PenLdapLookupModule at com.paisley.rnj.security.lookup.PenLdapLookupModule.lookup(PenLdapLookupModule.java:162) at com.paisley.rnj.security.service.LookupServiceBean.performLookup(LookupServiceBean.java:720) at com.paisley.rnj.security.service.LookupServiceBean.refresh(LookupServiceBean.java:471) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) at java.lang.reflect.Method.invoke(Method.java:508) at com.paisley.foundation.reflect.ReflectorToolkit.callMethod(ReflectorToolkit.java:1345) at com.paisley.foundation.database.transaction.ServiceTransactionInjector.callRealServiceMethod(ServiceTransactionInjector.java:336) at com.paisley.foundation.database.transaction.ServiceTransactionInjector.invoke(ServiceTransactionInjector.java:178) at com.sun.proxy.$Proxy38.refresh(Unknown Source) at com.paisley.rnj.security.lookup.work.LookupInitializeWork.execute(LookupInitializeWork.java:86) at com.paisley.rnj.security.lookup.thread.LookupRefreshBackgroundTask.execute(LookupRefreshBackgroundTask.java:94) at com.paisley.foundation.background.BackgroundThread.run(BackgroundThread.java:141)
Извините, я временно прекратил работу над этой частью. На этой неделе снова началось
Причина проблемы: в последней среде выполнения Java по умолчанию отключен SSLv3. Итак, мое приложение использовало SSLv3, поэтому ему не удавалось пройти аутентификацию в LDAPS. Выполнение рекомендованных ниже действий также не помогло
Решение: мне пришлось переключиться на использование Amazon Corretto 8 JDK, это решило проблему. Мне также пришлось удалить SSLv3 из «jdk.tls.disabledAlgorithms» в файле java.security.