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.

Reply via email to