Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CAS和LDAP自定义集成_Ldap_Cas - Fatal编程技术网

CAS和LDAP自定义集成

CAS和LDAP自定义集成,ldap,cas,Ldap,Cas,我要描述一种奇怪的情况。。我们的产品具有正常工作的CAS和LDAP集成。问题是,并非所有客户机都使用LDAP,这很好,但集成仍然存在,因此CAS正在积极尝试连接到LDAP服务器(当然失败了)。它每五分钟尝试连接一次,这会创建一个非常臃肿的Tomcat日志。我的目标是防止它在不破坏集成的情况下尝试连接。我希望有人知道如何防止或管理CAS何时/如何尝试连接到定义的LDAP服务器 我已尝试删除CAS属性文件以及deployerConfigContext.xml的关键组件,但集成有太多依赖项,我没有成功

我要描述一种奇怪的情况。。我们的产品具有正常工作的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.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服务器。