I am building a CAS v4.0 server in a lab environment for the first
time, so it is entirely possible I have made some very basic mistake
somewhere.

My setup is running Centos v5.10 with JDK v1.60. (I have to use these
specific versions as part of the project specifications I was given.)
I built the CAS applicationusing the Maven WAR overlay method and it
will run OK using the basic configuration from
https://raw.githubusercontent.com/Jasig/cas/v4.0.0/cas-server-webapp/src/main/webapp/WEB-INF/deployerConfigContext.xml.

I need trying to get an authenticated LDAP bind setup using the sample
code at http://jasig.github.io/cas/4.0.0/installation/LDAP-Authentication.html.
I have created an ldap.properties file and added it to the
propertyFileConfigurer.xml file under
$PROJECT_HOME/src/main/webapp/WEB-INF/spring-configuration and it
deploys OK. The problem I am having is the bindConnectionPool bean
will not create properly. This error comes up every time the app tries
to start. I've Googled it and can find no references to this error
anywhere:

Caused by: org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'bindConnectionPool' defined in
ServletContext resource [/WEB-INF/deployerConfigContext.xml]:
Invocation of init method failed; nested exception is
java.lang.IllegalArgumentException: path must start with either
classpath: or file:
at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1512)
......
Caused by: java.lang.IllegalArgumentException: path must start with
either classpath: or file:
at org.ldaptive.LdapUtils.getResource(LdapUtils.java:399)
...

I've attached my deployerConfigContext.xml file. Please let me know if
you have any suggestions on how to fix this, or what I am doing wrong
that may be causing this.

Thanks,
Daniel.

-- 
You are currently subscribed to cas-user@lists.jasig.org as: 
arch...@mail-archive.com
To unsubscribe, change settings or access archives, see 
http://www.ja-sig.org/wiki/display/JSG/cas-user
<?xml version="1.0" encoding="UTF-8"?>
<!--
    Licensed to Jasig under one or more contributor license
    agreements. See the NOTICE file distributed with this work
    for additional information regarding copyright ownership.
    Jasig licenses this file to you under the Apache License,
    Version 2.0 (the "License"); you may not use this file
    except in compliance with the License.  You may obtain a
    copy of the License at the following location:

      http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.
-->
<!--
| deployerConfigContext.xml centralizes into one file some of the declarative configuration that
| all CAS deployers will need to modify.
|
| This file declares some of the Spring-managed JavaBeans that make up a CAS deployment.  
| The beans declared in this file are instantiated at context initialization time by the Spring 
| ContextLoaderListener declared in web.xml.  It finds this file because this
| file is among those declared in the context parameter "contextConfigLocation".
|
| By far the most common change you will need to make in this file is to change the last bean
| declaration to replace the default authentication handler with
| one implementing your approach for authenticating usernames and passwords.
+
-->
<beans 
	xmlns="http://www.springframework.org/schema/beans";
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
	xmlns:p="http://www.springframework.org/schema/p";
	xmlns:c="http://www.springframework.org/schema/c"; 
	xmlns:tx="http://www.springframework.org/schema/tx";
	xmlns:util="http://www.springframework.org/schema/util"; 
	xmlns:sec="http://www.springframework.org/schema/security"; 
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/tx 
	http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/security 
	http://www.springframework.org/schema/security/spring-security-3.2.xsd http://www.springframework.org/schema/util 
	http://www.springframework.org/schema/util/spring-util.xsd";>
	
	<bean id="authenticationManager" class="org.jasig.cas.authentication.PolicyBasedAuthenticationManager">
		<constructor-arg>
			<map>
				<entry key-ref="proxyAuthenticationHandler" value-ref="proxyPrincipalResolver"/>
				<entry key-ref="ldapAuthenticationHandler" value-ref="primaryPrincipalResolver"/>
			</map>
		</constructor-arg>
		<property name="authenticationPolicy">
			<bean class="org.jasig.cas.authentication.AnyAuthenticationPolicy"/>
		</property>
	</bean>
	
	<bean id="proxyAuthenticationHandler" class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" 
		  p:httpClient-ref="httpClient"/>
	
	<bean id="proxyPrincipalResolver" class="org.jasig.cas.authentication.principal.BasicPrincipalResolver"/>
	
	<bean id="primaryPrincipalResolver" class="org.jasig.cas.authentication.principal.PersonDirectoryPrincipalResolver">
		<property name="attributeRepository" ref="attributeRepository"/>
	</bean>
	
	<bean id="attributeRepository" class="org.jasig.services.persondir.support.StubPersonAttributeDao" 
		  p:backingMap-ref="attrRepoBackingMap"/>
	
	<util:map id="attrRepoBackingMap">
		<entry key="uid" value="uid"/>
		<entry key="eduPersonAffiliation" value="eduPersonAffiliation"/>
		<entry key="groupMembership" value="groupMembership"/>
	</util:map>
	
	<bean id="serviceRegistryDao" class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl" 
		  p:registeredServices-ref="registeredServicesList"/>
	
	<util:list id="registeredServicesList">
		<bean class="org.jasig.cas.services.RegexRegisteredService" p:id="0" p:name="HTTP and IMAP" 
			  p:description="Allows HTTP(S) and IMAP(S) protocols" p:serviceId="^(https?|imaps?)://.*" p:evaluationOrder="10000001"/>
	</util:list>
	
	<bean id="auditTrailManager" class="com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager"/>
	
	<bean id="healthCheckMonitor" class="org.jasig.cas.monitor.HealthCheckMonitor" p:monitors-ref="monitorsList"/>
	
	<util:list id="monitorsList">
		<bean class="org.jasig.cas.monitor.MemoryMonitor" p:freeMemoryWarnThreshold="10"/>
		<bean class="org.jasig.cas.monitor.SessionMonitor" p:ticketRegistry-ref="ticketRegistry" 
			  p:serviceTicketCountWarnThreshold="5000" p:sessionCountWarnThreshold="100000"/>
	</util:list>

<!-- START DEV LDAP Config -->
	<bean id="ldapAuthenticationHandler"
		  class="org.jasig.cas.authentication.LdapAuthenticationHandler"
		  p:principalIdAttribute="mail"
		  c:authenticator-ref="authenticator">
		<property name="principalAttributeMap">
			<map>
				<!--
				   | This map provides a simple attribute resolution mechanism.
				   | Keys are LDAP attribute names, values are CAS attribute names.
				   | Use this facility instead of a PrincipalResolver if LDAP is
				   | the only attribute source.
				   -->
				<entry key="member" value="member" />
				<entry key="mail" value="mail" />
				<entry key="displayName" value="displayName" />
			</map>
		</property>
	</bean>

	<bean id="authenticator" class="org.ldaptive.auth.Authenticator"
		  c:resolver-ref="dnResolver"
		  c:handler-ref="authHandler" />

	<bean id="dnResolver" class="org.ldaptive.auth.PooledSearchDnResolver"
		  p:baseDn="${ldap.baseDn}"
		  p:allowMultipleDns="false"
		  p:connectionFactory-ref="searchPooledLdapConnectionFactory"
		  p:userFilter="${ldap.authn.searchFilter}" />

	<bean id="searchPooledLdapConnectionFactory"
		  class="org.ldaptive.pool.PooledConnectionFactory"
		  p:connectionPool-ref="searchConnectionPool" />

	<bean id="searchConnectionPool" parent="abstractConnectionPool"
		  p:connectionFactory-ref="searchConnectionFactory" />

	<bean id="searchConnectionFactory"
		  class="org.ldaptive.DefaultConnectionFactory"
		  p:connectionConfig-ref="searchConnectionConfig" />

	<bean id="searchConnectionConfig" parent="abstractConnectionConfig"
		  p:connectionInitializer-ref="bindConnectionInitializer" />

	<bean id="bindConnectionInitializer"
		  class="org.ldaptive.BindConnectionInitializer"
		  p:bindDn="${ldap.managerDn}">
		<property name="bindCredential">
			<bean class="org.ldaptive.Credential"
				  c:password="${ldap.managerPassword}" />
		</property>
	</bean>

	<bean id="abstractConnectionPool" abstract="true"
		  class="org.ldaptive.pool.BlockingConnectionPool"
		  init-method="initialize"
		  p:poolConfig-ref="ldapPoolConfig"
		  p:blockWaitTime="${ldap.pool.blockWaitTime}"
		  p:validator-ref="searchValidator"
		  p:pruneStrategy-ref="pruneStrategy" />

	<bean id="abstractConnectionConfig" abstract="true"
		  class="org.ldaptive.ConnectionConfig"
		  p:ldapUrl="${ldap.url}"
		  p:connectTimeout="${ldap.connectTimeout}"
		  p:useStartTLS="${ldap.useStartTLS}"
		  p:sslConfig-ref="sslConfig" />

	<bean id="ldapPoolConfig" class="org.ldaptive.pool.PoolConfig"
		  p:minPoolSize="${ldap.pool.minSize}"
		  p:maxPoolSize="${ldap.pool.maxSize}"
		  p:validateOnCheckOut="${ldap.pool.validateOnCheckout}"
		  p:validatePeriodically="${ldap.pool.validatePeriodically}"
		  p:validatePeriod="${ldap.pool.validatePeriod}" />

	<bean id="sslConfig" class="org.ldaptive.ssl.SslConfig">
		<property name="credentialConfig">
			<bean class="org.ldaptive.ssl.X509CredentialConfig"
				  p:trustCertificates="${ldap.trustedCert}" />
		</property>
	</bean>

	<bean id="pruneStrategy" class="org.ldaptive.pool.IdlePruneStrategy"
		  p:prunePeriod="${ldap.pool.prunePeriod}"
		  p:idleTime="${ldap.pool.idleTime}" />

	<bean id="searchValidator" class="org.ldaptive.pool.SearchValidator" />

	<bean id="authHandler" class="org.ldaptive.auth.PooledBindAuthenticationHandler"
		  p:connectionFactory-ref="bindPooledLdapConnectionFactory" />

	<bean id="bindPooledLdapConnectionFactory"
		  class="org.ldaptive.pool.PooledConnectionFactory"
		  p:connectionPool-ref="bindConnectionPool" />

	<bean id="bindConnectionPool" parent="abstractConnectionPool"
		  p:connectionFactory-ref="bindConnectionFactory" />

	<bean id="bindConnectionFactory"
		  class="org.ldaptive.DefaultConnectionFactory"
		  p:connectionConfig-ref="bindConnectionConfig" />

	<bean id="bindConnectionConfig" parent="abstractConnectionConfig" />
<!-- END DEV LDAP Config -->
</beans>

Reply via email to