CAS和LDAP自定义集成
我要描述一种奇怪的情况。。我们的产品具有正常工作的CAS和LDAP集成。问题是,并非所有客户机都使用LDAP,这很好,但集成仍然存在,因此CAS正在积极尝试连接到LDAP服务器(当然失败了)。它每五分钟尝试连接一次,这会创建一个非常臃肿的Tomcat日志。我的目标是防止它在不破坏集成的情况下尝试连接。我希望有人知道如何防止或管理CAS何时/如何尝试连接到定义的LDAP服务器 我已尝试删除CAS属性文件以及deployerConfigContext.xml的关键组件,但集成有太多依赖项,我没有成功 下面是cas.properties文件中使用的一些属性。将ldap.auth.enabled设置为false允许我们的集成在验证用户时不使用ldap,但不会阻止CAS尝试连接到ldap服务器:CAS和LDAP自定义集成,ldap,cas,Ldap,Cas,我要描述一种奇怪的情况。。我们的产品具有正常工作的CAS和LDAP集成。问题是,并非所有客户机都使用LDAP,这很好,但集成仍然存在,因此CAS正在积极尝试连接到LDAP服务器(当然失败了)。它每五分钟尝试连接一次,这会创建一个非常臃肿的Tomcat日志。我的目标是防止它在不破坏集成的情况下尝试连接。我希望有人知道如何防止或管理CAS何时/如何尝试连接到定义的LDAP服务器 我已尝试删除CAS属性文件以及deployerConfigContext.xml的关键组件,但集成有太多依赖项,我没有成功
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服务器连接的堆栈跟踪非常庞大。这里是一个小片段。如果有用的话,我可以附上整件东西
org.ldaptive.provider.ConnectionException:
javax.naming.CommunicationException:ldap.url.com:389[根异常]
是java.net.UnknownHostException:ldap.url.com
我在JDBC和LDAP/AD处理程序之间切换。请确保在下面注释掉LDAP处理程序: deployerConfigContext.xml xpath: /豆子 /bean[class=org.jasig.cas.authentication.AuthenticationManagerImpl] /属性[名称=authenticationHandlers] /名单/
我们通过在CAS中的log4j配置文件中禁用此log4j属性,圆满解决了此问题:
<Logger name="org.ldaptive.pool.BlockingConnectionPool" level="debug">
<AppenderRef ref="console" />
</Logger>
另一种选择可能是创建一个log4j过滤器,并针对导致tomcat文件变大的特定消息。抱歉,但我不认为这与我的问题有什么关系。我正在寻找一种解决方案,在没有有效连接的情况下,阻止ldap尝试连接。如果您在Sprin中声明一个beang beans xml,然后Spring将对其进行初始化。我了解到您注释掉了导致Tomcat崩溃的整个ldap部分。我看到您正在定期设置连接池和ValidatePool。不确定是否要注释掉这些Bean或查找特定属性?另外,请添加CAS和Ldaptive的版本。我们使用ldapsdk和CAS版本4.2.7的版本4.1。在deployerConfigContext.xml文件中没有名为authenticationHandlers的属性。我们尝试将validatePeriodically设置为false,但这并不能阻止CAS继续尝试连接到ldap服务器。