Someone requested that I post my ldap bind deployerConfigContext.xml.  I
haven't cleaned it up, but it works correctly to bind/search/authenticate
against a non-ssl ldap.  The cas was version 4.0.0 built using Maven.

<?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";>


<bean id="authenticationManager"
class="org.jasig.cas.authentication.PolicyBasedAuthenticationManager">
        <constructor-arg>
            <map>
                <entry key-ref="ldapAuthenticationHandler"
value-ref="usernamePasswordCredentialsResolver" />

            </map>
        </constructor-arg>
    </bean>

    <bean id="ldapAuthenticationHandler"
          class="org.jasig.cas.authentication.LdapAuthenticationHandler"
          p:principalIdAttribute="change-theLoginAttribute">
        <constructor-arg ref="authenticator" />
        <property name="principalAttributeMap">
            <map>
                <entry key="mail" value="mail" />
                <entry key="cn" value="cn" />
            </map>
        </property>
    </bean>

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

    <bean id="connectionConfig" class="org.ldaptive.ConnectionConfig"
          p:ldapUrl="ldap://change-ldapServer:ldapPort";
          p:connectTimeout="3000"
          p:useStartTLS="false"
          p:connectionInitializer-ref="bindConnectionInitializer"/>

<bean id="bindConnectionInitializer"
      class="org.ldaptive.BindConnectionInitializer"
      p:bindDn="change-bindAccount">
    <property name="bindCredential">
        <bean class="org.ldaptive.Credential"
              c:password="change-bindPassword" />
    </property>
</bean>

    <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="pruneStrategy" class="org.ldaptive.pool.IdlePruneStrategy"
          p:prunePeriod="300"
          p:idleTime="600" />

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

    <bean id="connectionPool"
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="pooledSearchDnResolver"
class="org.ldaptive.auth.PooledSearchDnResolver"
          p:baseDn="ou=People,o=pcc.edu,o=cp"
          p:allowMultipleDns="false"
          p:connectionFactory-ref="pooledConnectionFactory"
          p:userFilter="pdsLoginId={user}" />

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

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

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

    <!--
       | Credential-to-principal resolver beans
       -->
    <bean id="usernamePasswordCredentialsResolver"

class="org.jasig.cas.authentication.principal.BasicPrincipalResolver" />

    <bean id="httpBasedCredentialsResolver"

class="org.jasig.cas.authentication.principal.BasicPrincipalResolver" />

    <!-- 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 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="uid" value="uid" />
        <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>

On Mon, Nov 10, 2014 at 11:31 AM, Jason Whitener <[email protected]> wrote:

> Hi Alberto/Unicon,
>
> Thanks.  I was able to get everything to work.
>
> If anyone wants a non-ssl ldap deployerConfig using bind credentials, let
> me know and I'll post it.
>
> Jason
>
>
>
>
> On Mon, Nov 10, 2014 at 1:17 AM, Alberto Cabello Sánchez <[email protected]>
> wrote:
>
>> On Fri, 07 Nov 2014 16:24:13 -0800
>> Jason Whitener <[email protected]> wrote:
>>
>> > Would anyone share a complete deployerConfigContext.xml that
>> authenticates
>> > users against LDAP by means of an authenticated search?
>> >
>> > I see the documentation here:
>> > https://jasig.github.io/cas/4.0.0/installation/LDAP-Authentication.html
>>
>> I have LDAP with direct bind. FWIW, following the aforementioned doc was
>> rather
>> confusing to me (too much information at the same time) so I tried to
>> understand
>> the meaning of it and started from the basic config that you can find at
>>
>>
>> https://github.com/UniconLabs/simple-cas-overlay-template/blob/master/src/main/webapp/WEB-INF/deployerConfigContext.xml
>>
>> tweaking just a thing at each step.
>>
>> > But when I try to put the chain of beans, under the "LDAP Requiring
>> > Authenticated Search" in my new deployerConfigContext.xml (created using
>> > maven), I get a bunch of errors.
>>
>> Maybe it would be helpful to see that errors.
>>
>> > Based on this thread:
>> > https://groups.google.com/forum/#!topic/jasig-cas-user/2G85KtZTL1c , It
>> > looks like the bean with id 'authenticationManager' needs to have a
>> entry
>> > key-ref value of ldapAuthenticationHandler.
>>
>> Actually, it needs a list of AuthenticationHandlers:
>>
>> "AuthenticationManager - Entry point into authentication subsystem. It
>> accepts
>>  one or more credentials and delegates authentication to configured
>>  AuthenticationHandler components. It collects the results of each
>> attempt and
>>  determines effective security policy."
>>
>> https://github.com/Jasig/cas/wiki/Configuring-Authentication-Components
>>
>>
>>
>> --
>> Alberto Cabello Sánchez
>> <[email protected]>
>>
>> --
>> You are currently subscribed to [email protected] as:
>> [email protected]
>> To unsubscribe, change settings or access archives, see
>> http://www.ja-sig.org/wiki/display/JSG/cas-user
>>
>>
>

-- 
You are currently subscribed to [email protected] as: 
[email protected]
To unsubscribe, change settings or access archives, see 
http://www.ja-sig.org/wiki/display/JSG/cas-user

Reply via email to