You generally don’t, unless you want to resolve the principal/attributes from a 
different source other than what the handler itself uses:
http://jasig.github.io/cas/4.1.x/installation/Configuring-Principal-Resolution.html#principalresolver-vs-authenticationhandler
 
<http://jasig.github.io/cas/4.1.x/installation/Configuring-Principal-Resolution.html#principalresolver-vs-authenticationhandler>

> On Nov 26, 2015, at 2:58 AM, Li <[email protected]> wrote:
> 
> hi
> 
> I am not a native english speaker, please forgive me for my unclear 
> explanation.
> 
> I got some problem while configuring cas with ldap authentication. 
> 
>  
> <https://lh3.googleusercontent.com/-17iMSMn9HuU/VlbVG_pM47I/AAAAAAAAABw/FWPUTPJSLUw/s1600/QQ20151126-3.png>
> 
> click login, and capture from wireshark, you can see ldap queries, and the 
> responses are correct(unless i intend the wrong password)
> 
>  
> <https://lh3.googleusercontent.com/-qqDBBnklNgE/VlbWlSQqK-I/AAAAAAAAAB8/MNIx8VFI2WE/s1600/QQ20151126-4.png>
> 
> i find this
> 
> <entry key-ref="proxyAuthenticationHandler" 
> value-ref="proxyPrincipalResolver"/>
> do i need a ldapAuthenticationResolver for ldapAuthenticationHandler?
> 
> 
> here's my configuration
> 
> cas-4.1.2/cas-server-webapp/src/main/webapp/WEB-INF/deployerConfigContext.xml
> 
> 
> 
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <!--
> 
>     Licensed to Apereo under one or more contributor license
>     agreements. See the NOTICE file distributed with this work
>     for additional information regarding copyright ownership.
>     Apereo 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.xsd
>        http://www.springframework.org/schema/tx 
> http://www.springframework.org/schema/tx/spring-tx.xsd
>        http://www.springframework.org/schema/security 
> http://www.springframework.org/schema/security/spring-security.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="ldapAuthenticationHandler" 
> value-ref="primaryPrincipalResolver"/>
>             </map>
>         </constructor-arg>
> 
>         <!-- Uncomment the metadata populator to capture the password.
>         <property name="authenticationMetaDataPopulators">
>            <util:list>
>                <bean 
> class="org.jasig.cas.authentication.CacheCredentialsMetaDataPopulator"/>
>            </util:list>
>         </property>
>         -->
> 
>         <!--
>            | Defines the security policy around authentication. Some 
> alternative policies that ship with CAS:
>            |
>            | * NotPreventedAuthenticationPolicy - all credential must either 
> pass or fail authentication
>            | * AllAuthenticationPolicy - all presented credential must be 
> authenticated successfully
>            | * RequiredHandlerAuthenticationPolicy - specifies a handler that 
> must authenticate its credential to pass
>            -->
>         <property name="authenticationPolicy">
>             <bean 
> class="org.jasig.cas.authentication.AnyAuthenticationPolicy"/>
>         </property>
>     </bean>
>     <bean id="ldapAuthenticationHandler"
>           class="org.jasig.cas.authentication.LdapAuthenticationHandler"
>           p:principalIdAttribute="cn"
>           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"/>
> 
>     <!--
>        | The following DN format works for many directories, but may need to 
> be
>        | customized.
>        -->
>     <bean id="dnResolver"
>           class="org.ldaptive.auth.FormatDnResolver"
>           c:format="cn=%s,${ldap.authn.baseDn}"/>
> 
>     <bean id="authHandler" 
> class="org.ldaptive.auth.PooledBindAuthenticationHandler"
>           p:connectionFactory-ref="pooledLdapConnectionFactory"/>
> 
>     <bean id="pooledLdapConnectionFactory"
>           class="org.ldaptive.pool.PooledConnectionFactory"
>           p:connectionPool-ref="connectionPool"/>
> 
>     <bean id="connectionPool"
>           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"
>           p:connectionFactory-ref="connectionFactory"/>
> 
>     <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="connectionFactory" class="org.ldaptive.DefaultConnectionFactory"
>           p:connectionConfig-ref="connectionConfig"/>
> 
>     <bean id="connectionConfig" class="org.ldaptive.ConnectionConfig"
>           p:ldapUrl="${ldap.url}"
>           p:connectTimeout="${ldap.connectTimeout}"
>           p:useStartTLS="${ldap.useStartTLS}"
>           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="${ldap.pool.prunePeriod}"
>           p:idleTime="${ldap.pool.idleTime}"/>
> 
>     <bean id="searchValidator" class="org.ldaptive.pool.SearchValidator"/>
>     <!-- Required for proxy ticket mechanism. -->
>     <bean id="proxyAuthenticationHandler"
>           
> class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
>           p:httpClient-ref="supportsTrustStoreSslSocketFactoryHttpClient"/>
> 
>     <!--
>        | TODO: Replace this component with one suitable for your enviroment.
>        |
>        | This component provides authentication for the kind of credential 
> used in your environment. In most cases
>        | credential is a username/password pair that lives in a system of 
> record like an LDAP directory.
>        | The most common authentication handler beans:
>        |
>        | * org.jasig.cas.authentication.LdapAuthenticationHandler
>        | * org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler
>        | * 
> org.jasig.cas.adaptors.x509.authentication.handler.support.X509CredentialsAuthenticationHandler
>        | * 
> org.jasig.cas.support.spnego.authentication.handler.support.JCIFSSpnegoAuthenticationHandler
>        -->
>     <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"
>           p:principalFactory-ref="principalFactory"
>           p:attributeRepository-ref="attributeRepository"/>
> 
>     <!--
>     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.NamedStubPersonAttributeDao"
>           p:backingMap-ref="attrRepoBackingMap"/>
> 
>     <util:map id="attrRepoBackingMap">
>         <entry key="cn" value="cn"/>
>         <entry key="eduPersonAffiliation" value="eduPersonAffiliation"/>
>         <entry key="groupMembership" value="groupMembership"/>
>         <entry>
>             <key>
>                 <value>memberOf</value>
>             </key>
>             <list>
>                 <value>faculty</value>
>                 <value>staff</value>
>                 <value>org</value>
>             </list>
>         </entry>
>     </util:map>
> 
>     <bean id="serviceRegistryDao" 
> class="org.jasig.cas.services.JsonServiceRegistryDao"
>           
> c:configDirectory="${service.registry.config.location:classpath:services}"/>
> 
>     <bean id="auditTrailManager" 
> class="org.jasig.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>
> 
> 
> thank you!
> 
> 
> 
> -- 
> 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] 
> <mailto:[email protected]>.
> Visit this group at http://groups.google.com/a/apereo.org/group/cas-user/ 
> <http://groups.google.com/a/apereo.org/group/cas-user/>.

-- 
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].
Visit this group at http://groups.google.com/a/apereo.org/group/cas-user/.

Reply via email to