Простая аутентификация LDAP на Tomcat 9

У меня есть веб-приложение, работающее на 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)
0
задан 12 April 2021 в 13:57
1 ответ

Извините, я временно прекратил работу над этой частью. На этой неделе снова началось

Причина проблемы: в последней среде выполнения Java по умолчанию отключен SSLv3. Итак, мое приложение использовало SSLv3, поэтому ему не удавалось пройти аутентификацию в LDAPS. Выполнение рекомендованных ниже действий также не помогло

  • Откройте {JRE_HOME}\lib\security\java.security -file в текстовом редакторе.
  • Удалите или закомментируйте следующую строку «jdk.tls.disabledAlgorithms=SSLv3»

Решение: мне пришлось переключиться на использование Amazon Corretto 8 JDK, это решило проблему. Мне также пришлось удалить SSLv3 из «jdk.tls.disabledAlgorithms» в файле java.security.

1
ответ дан 4 August 2021 в 08:54

Теги

Похожие вопросы