Carl, Here's quite a bit of information, but you may be able to help locate the issue.
Below is my deployerConfigContext.xml file (domain info redacted); the first 50 lines of cas.log, and lastly the first 50 lines of catalina.2016-10-4.log. Thanks, Hank *deployerConfigContext.xml*: <?xml version="1.0" encoding="UTF-8"?> <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"> <!-- | The authentication manager defines security policy for authentication by specifying at a minimum | the authentication handlers that will be used to authenticate credential. While the AuthenticationManager | interface supports plugging in another implementation, the default PolicyBasedAuthenticationManager should | be sufficient in most cases. +--> <bean id="authenticationManager" class="org.jasig.cas.authentication.PolicyBasedAuthenticationManager"> <constructor-arg> <map> <!-- | IMPORTANT | Every handler requires a unique name. | If more than one instance of the same handler class is configured, you must explicitly | set its name to something other than its default name (typically the simple class name). --> <entry key-ref="proxyAuthenticationHandler" value-ref="proxyPrincipalResolver" /> <entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" /> <entry key-ref="ldapAuthenticationHandler" value-ref="usernamePasswordCredentialsResolver" /> </map> </constructor-arg> <property name="authenticationPolicy"> <bean class="org.jasig.cas.authentication.AnyAuthenticationPolicy" /> </property> </bean> <!-- Required for proxy ticket mechanism. --> <bean id="proxyAuthenticationHandler" class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref="httpClient" /> <bean id="primaryAuthenticationHandler" class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler"> <property name="users"> <map> <entry key="casuser" value="Mellon"/> </map> </property> </bean> <!-- Required for proxy ticket mechanism --> <bean id="proxyPrincipalResolver" class="org.jasig.cas.authentication.principal.BasicPrincipalResolver" /> <!-- | Resolves a principal from a credential using an attribute repository that is configured to resolve | against a deployer-specific store (e.g. LDAP). --> <bean id="primaryPrincipalResolver" class="org.jasig.cas.authentication.principal.PersonDirectoryPrincipalResolver" > <property name="attributeRepository" ref="attributeRepository" /> </bean> <bean id="usernamePasswordCredentialsResolver" class="org.jasig.cas.authentication.principal.BasicPrincipalResolver" /> <!-- http://jasig.github.io/cas/4.0.x/installation/LDAP-Authentication.html LDAP Supporting Direct Bind --> <bean id="ldapAuthenticationHandler" class="org.jasig.cas.authentication.LdapAuthenticationHandler" p:principalIdAttribute="sAMAccountName" 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="sAMAccountName" value="sAMAccountName" /> <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="DC=example,DC=com" p:allowMultipleDns="false" p:connectionFactory-ref="searchPooledLdapConnectionFactory" p:userFilter="sAMAccountName={user}" /> <bean id="searchPooledLdapConnectionFactory" class="org.ldaptive.pool.PooledConnectionFactory" p:connectionPool-ref="searchConnectionPool" /> <bean id="searchConnectionPool" parent="abstractConnectionPool" /> <bean id="abstractConnectionPool" abstract="true" class="org.ldaptive.pool.BlockingConnectionPool" init-method="initialize" p:poolConfig-ref="ldapPoolConfig" p:blockWaitTime="3000" p:validator-ref="searchValidator" p:pruneStrategy-ref="pruneStrategy" p:connectionFactory-ref="connectionFactory" /> <bean id="ldapPoolConfig" class="org.ldaptive.pool.PoolConfig" p:minPoolSize="3" p:maxPoolSize="10" p:validateOnCheckOut="true" p:validatePeriodically="false" p:validatePeriod="300" /> <bean id="connectionFactory" class="org.ldaptive.DefaultConnectionFactory" p:connectionConfig-ref="connectionConfig" /> <bean id="connectionConfig" class="org.ldaptive.ConnectionConfig" p:ldapUrl="ldap://example.com:389" p:connectTimeout="3000" p:useStartTLS="false" p:sslConfig-ref="sslConfig" /> <!-- <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="300" p:idleTime="600" /> <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" /> <!-- Bean that defines the attributes that a service may return. This example uses the Stub/Mock version. A real implementation may go against a database or LDAP server. The id should remain "attributeRepository" though. +--> <bean id="attributeRepository" class="org.jasig.services.persondir.support.StubPersonAttributeDao" p:backingMap-ref="attrRepoBackingMap" /> <util:map id="attrRepoBackingMap"> <entry key="sAMAccountName" value="sAMAccountName" /> <!-- question about this: changed "uid" to "sAMAccountName" --> <entry key="eduPersonAffiliation" value="eduPersonAffiliation" /> <entry key="groupMembership" value="groupMembership" /> </util:map> <!-- Sample, in-memory data store for the ServiceRegistry. A real implementation would probably want to replace this with the JPA-backed ServiceRegistry DAO The name of this bean should remain "serviceRegistryDao". +--> <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" /> <!-- Use the following definition instead of the above to further restrict access to services within your domain (including sub domains). Note that example.com must be replaced with the domain you wish to permit. This example also demonstrates the configuration of an attribute filter that only allows for attributes whose length is 3. --> <!-- <bean class="org.jasig.cas.services.RegexRegisteredService"> <property name="id" value="1" /> <property name="name" value="HTTP and IMAP on example.com" /> <property name="description" value="Allows HTTP(S) and IMAP(S) protocols on example.com" /> <property name="serviceId" value="^(https?|imaps?)://([A-Za-z0-9_-]+\.)*example\.com/.*" /> <property name="evaluationOrder" value="0" /> <property name="attributeFilter"> <bean class="org.jasig.cas.services.support.RegisteredServiceRegexAttributeFilter" c:regex="^\w{3}$" /> </property> </bean> --> </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" /> <!-- NOTE The following ticket registries support SessionMonitor: * DefaultTicketRegistry * JpaTicketRegistry Remove this monitor if you use an unsupported registry. --> <bean class="org.jasig.cas.monitor.SessionMonitor" p:ticketRegistry-ref="ticketRegistry" p:serviceTicketCountWarnThreshold="5000" p:sessionCountWarnThreshold="100000" /> </util:list> </beans> *cas.log*: [root@cas-server01 tomcat]# tail -50 cas.log 2016-10-04 17:15:02,977 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - Loaded 2 services from JsonServiceRegistryDao. 2016-10-04 17:16:02,975 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - Reloading registered services. 2016-10-04 17:16:02,977 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - Loaded 2 services from JsonServiceRegistryDao. 2016-10-04 17:16:08,858 INFO [org.jasig.cas.ticket.registry.TicketRegistryCleaner] - Beginning ticket cleanup... 2016-10-04 17:16:08,859 INFO [org.jasig.cas.ticket.registry.TicketRegistryCleaner] - 0 expired tickets found and removed. 2016-10-04 17:17:02,977 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - Reloading registered services. 2016-10-04 17:17:02,978 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - Loaded 2 services from JsonServiceRegistryDao. 2016-10-04 17:18:02,976 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - Reloading registered services. 2016-10-04 17:18:02,977 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - Loaded 2 services from JsonServiceRegistryDao. 2016-10-04 17:18:08,855 INFO [org.jasig.cas.ticket.registry.TicketRegistryCleaner] - Beginning ticket cleanup... 2016-10-04 17:18:08,855 INFO [org.jasig.cas.ticket.registry.TicketRegistryCleaner] - 0 expired tickets found and removed. 2016-10-04 17:19:02,976 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - Reloading registered services. 2016-10-04 17:19:02,977 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - Loaded 2 services from JsonServiceRegistryDao. 2016-10-04 17:19:22,493 INFO [org.jasig.cas.authentication.PolicyBasedAuthenticationManager] - AcceptUsersAuthenticationHandler failed authenticating <my sAMAccountName> 2016-10-04 17:19:22,494 INFO [org.jasig.inspektr.audit.support.Slf4jLoggingAuditTrailManager] - Audit trail record BEGIN ============================================================= WHO: [my sAMAccountName] WHAT: Supplied credentials: [my sAMAccountName] ACTION: AUTHENTICATION_FAILED APPLICATION: CAS WHEN: Tue Oct 04 17:19:22 EDT 2016 CLIENT IP ADDRESS: <my IP> SERVER IP ADDRESS: <cas server IP> ============================================================= 2016-10-04 17:19:22,494 INFO [org.jasig.inspektr.audit.support.Slf4jLoggingAuditTrailManager] - Audit trail record BEGIN ============================================================= WHO: <my sAMAccountName> WHAT: Supplied credentials: [my sAMAccountName] ACTION: AUTHENTICATION_FAILED APPLICATION: CAS WHEN: Tue Oct 04 17:19:22 EDT 2016 CLIENT IP ADDRESS: <my IP> SERVER IP ADDRESS: <cas server IP> ============================================================= 2016-10-04 17:20:02,976 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - Reloading registered services. 2016-10-04 17:20:02,977 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - Loaded 2 services from JsonServiceRegistryDao. 2016-10-04 17:20:08,854 INFO [org.jasig.cas.ticket.registry.TicketRegistryCleaner] - Beginning ticket cleanup... 2016-10-04 17:20:08,854 INFO [org.jasig.cas.ticket.registry.TicketRegistryCleaner] - 0 expired tickets found and removed. 2016-10-04 17:21:02,976 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - Reloading registered services. 2016-10-04 17:21:02,977 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - Loaded 2 services from JsonServiceRegistryDao. 2016-10-04 17:22:02,977 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - Reloading registered services. 2016-10-04 17:22:02,979 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - Loaded 2 services from JsonServiceRegistryDao. 2016-10-04 17:22:08,858 INFO [org.jasig.cas.ticket.registry.TicketRegistryCleaner] - Beginning ticket cleanup... 2016-10-04 17:22:08,858 INFO [org.jasig.cas.ticket.registry.TicketRegistryCleaner] - 0 expired tickets found and removed. 2016-10-04 17:23:02,977 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - Reloading registered services. 2016-10-04 17:23:02,981 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - Loaded 2 services from JsonServiceRegistryDao. *catalina.2016-10-4. log*: [root@cas-server01 logs]# tail -50 catalina.2016-10-04.log Oct 04, 2016 4:58:04 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/core is already defined Oct 04, 2016 4:58:04 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt_rt is already defined Oct 04, 2016 4:58:04 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt is already defined Oct 04, 2016 4:58:04 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/fmt is already defined Oct 04, 2016 4:58:04 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/functions is already defined Oct 04, 2016 4:58:04 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/permittedTaglibs is already defined Oct 04, 2016 4:58:04 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/scriptfree is already defined Oct 04, 2016 4:58:04 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jstl/sql_rt is already defined Oct 04, 2016 4:58:04 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jstl/sql is already defined Oct 04, 2016 4:58:04 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/sql is already defined Oct 04, 2016 4:58:04 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jstl/xml_rt is already defined Oct 04, 2016 4:58:04 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jstl/xml is already defined Oct 04, 2016 4:58:04 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/xml is already defined Oct 04, 2016 4:58:05 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deployment of web application directory /var/lib/tomcat/webapps/examples has finished in 372 ms Oct 04, 2016 4:58:05 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory /var/lib/tomcat/webapps/sample Oct 04, 2016 4:58:05 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deployment of web application directory /var/lib/tomcat/webapps/sample has finished in 203 ms Oct 04, 2016 4:58:05 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory /var/lib/tomcat/webapps/docs Oct 04, 2016 4:58:05 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deployment of web application directory /var/lib/tomcat/webapps/docs has finished in 147 ms Oct 04, 2016 4:58:05 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory /var/lib/tomcat/webapps/host-manager Oct 04, 2016 4:58:05 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deployment of web application directory /var/lib/tomcat/webapps/host-manager has finished in 138 ms Oct 04, 2016 4:58:05 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory /var/lib/tomcat/webapps/manager Oct 04, 2016 4:58:05 PM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deployment of web application directory /var/lib/tomcat/webapps/manager has finished in 145 ms Oct 04, 2016 4:58:05 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["http-bio-8443"] Oct 04, 2016 4:58:06 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["ajp-bio-8009"] Oct 04, 2016 4:58:06 PM org.apache.catalina.startup.Catalina start INFO: Server startup in 26285 ms On Friday, September 30, 2016 at 4:17:24 PM UTC-4, Hank Foss wrote: > > Thanks to the documentation, I've been able to get far with the CAS build > so far, but LDAP has been a bit of a challenge so far. > > I followed this link to the letter: > https://apereo.github.io/cas/4.2.x/installation/LDAP-Authentication.html > Then I re-ran maven by running* mvn install package*, reloaded WAR file, > and restarted Tomcat - not much luck so far. > > What is good is that the log file cas.log has shown the source IP and > attempting logon username. So that's a step in the right direction: at > least it's showing the failure! > > The local user casuser / Mellon logons are successful, and the cas.log > shows that too. > > Any advice on LDAP configuration on CAS 4.2.5 is greatly appreciated. > > > Thanks, > Hank > -- You received this message because you are subscribed to the Google Groups "CAS Community" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/a/apereo.org/group/cas-user/. To view this discussion on the web visit https://groups.google.com/a/apereo.org/d/msgid/cas-user/a691527c-5477-4b91-a8bb-18189df0a3fa%40apereo.org. For more options, visit https://groups.google.com/a/apereo.org/d/optout.
