Индивидуальная интеграция CAS и LDAP - PullRequest
0 голосов
/ 09 октября 2019

Я собираюсь описать странную ситуацию. У нас есть продукт с правильно работающей интеграцией CAS и LDAP. Проблема в том, что не все наши клиенты используют LDAP, что нормально, за исключением того, что интеграция все еще на месте, и поэтому CAS активно пытается подключиться к серверу ldap (и, конечно, не удается). Он пытается подключиться каждые пять минут, что создает очень раздутый журнал Tomcat. Моя цель состоит в том, чтобы предотвратить попытки подключения без потери интеграции. Я надеюсь, что кто-то знает способ предотвращения или управления, когда / как CAS пытается подключиться к определенному серверу LDAP.

Я пытался удалить ключевые компоненты файла свойств CAS, а также deployerConfigContext.xml, но интеграция имеет слишком много зависимостей, и я не увенчался успехом.

Вот некоторые свойства, которые используются в файле cas.properties. Установка для ldap.auth.enabled значения false позволяет нашей интеграции не использовать LDAP при аутентификации пользователя, но не препятствует попытке CAS подключиться к серверу LDAP:

ldap.auth.enabled=false
ldap.url=ldap://xyz.customurl.com
ldap.useStartTLS=false
ldap.rootDn=DC=xyz,DC=xyz,DC=com
ldap.baseDn=DC=xyz,DC=xyz,DC=com
ldap.connectTimeout=3000
ldap.managerDn=CN=xyz,CN=Users,DC=xyz,DC=xyz,DC=com
ldap.managerPassword=xyz
ldap.authn.searchFilter=(&(sAMAccountName={user})(objectClass=user))
ldap.domain=123.456.7.890
ldap.pool.minSize=1
ldap.pool.maxSize=10
ldap.pool.validateOnCheckout=false
ldap.pool.validatePeriodically=true
ldap.pool.blockWaitTime=3000
ldap.pool.validatePeriod=300
ldap.pool.prunePeriod=300
ldap.pool.idleTime=600
ldap.usePpolicy=false
ldap.allowMultipleDns=true

Это соответствующий раздел изdeployerConfigContext.xml. Я попытался прокомментировать весь раздел ldap, но получил множество других ошибок, которые приводили к сбою TomCat:

<bean id="ldapAuthenticationHandler"
      class="org.jasig.cas.authentication.LdapAuthenticationHandler"
      p:principalIdAttribute="sAMAccountName"
      c:authenticator-ref="authenticator" lazy-init="true"/>

<ldaptive:ad-authenticator id="authenticator"
                           ldapUrl="${ldap.url}"
                           userFilter="${ldap.authn.searchFilter}"
                           bindDn="${ldap.managerDn}"
                           bindCredential="${ldap.managerPassword}"
                           allowMultipleDns="${ldap.allowMultipleDns:false}"
                           connectTimeout="${ldap.connectTimeout}"
                           validateOnCheckOut="${ldap.pool.validateOnCheckout}"
                           failFastInitialize="false"
                           blockWaitTime="${ldap.pool.blockWaitTime}"
                           idleTime="${ldap.pool.idleTime}"
                           baseDn="${ldap.baseDn}"
                           maxPoolSize="${ldap.pool.maxSize}"
                           minPoolSize="${ldap.pool.minSize}"
                           validatePeriodically="${ldap.pool.validatePeriodically}"
                           validatePeriod="${ldap.pool.validatePeriod}"
                           prunePeriod="${ldap.pool.prunePeriod}"
                           useSSL="${ldap.use.ssl:false}"
                           subtreeSearch="${ldap.subtree.search:true}"
                           useStartTLS="${ldap.useStartTLS}"/>

Трассировка стека для соединения CAS с сервером LDAP огромна. Вот небольшой фрагмент. Я могу прикрепить все это, если это полезно. : ldap.url.com

Ответы [ 2 ]

0 голосов
/ 21 октября 2019

Мы удовлетворительно решили эту проблему, отключив это свойство log4j в файле конфигурации log4j в CAS:

 <Logger name="org.ldaptive.pool.BlockingConnectionPool" level="debug">
     <AppenderRef ref="console" />
 </Logger>

Другой вариант, возможно, заключался в создании фильтра log4j и нацеливании на конкретное сообщение, которое вызывало файл tomcat. стать огромным.

0 голосов
/ 15 октября 2019

Я переключаюсь между JDBC и обработчиками LDAP / AD. Обязательно закомментируйте ваш обработчик ldap в:

deployerConfigContext.xml xpath:

/ beans

/ bean [class = org.jasig.cas.authentication.AuthenticationManagerImpl]

/ свойство [name = authenticationHandlers ]

/ list /

...