CAS 和 LDAP 自定义集成



我要描述一个奇怪的情况。 我们有一个产品具有正常工作的 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 服务器连接的堆栈跟踪非常庞大。 这里有一个小片段。 如果有用,我可以附上整个东西。

org.ldaptive.provider.ConnectionException: javax.naming.CommunicationException: ldap.url.com:389 [根异常 是java.net.UnknownHostException: ldap.url.com

我在JDBC和LDAP/AD处理程序之间切换。确保在以下位置注释掉您的 ldap 处理程序:

deployerConfigContext.xmlxpath:

/豆

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

/属性[名称=身份验证处理程序]

/列表/

我们通过在 CAS 的 log4j 配置文件中禁用此 log4j 属性来令人满意地解决此问题:

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

另一种选择可能是创建一个 log4j 过滤器并针对导致 tomcat 文件变得巨大的特定消息。

最新更新