You should be able to use sAMAccountName if you want. -Scott
On Dec 10, 2007 10:20 AM, Jonathan Hayward http://JonathansCorner.com < [EMAIL PROTECTED]> wrote: > We are having trouble getting CAS to get the usernames from LDAP; in our > LDAP server, the "uid" field is not populated ("sAMAccountName" does its > work). > > Do any problems jump out, or any "usual suspects" for trouble getting > usernames from LDAP? > > <?xml version="1.0" encoding="UTF-8"?> > <!-- > | 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 > SimpleTestUsernamePasswordAuthenticationHandler 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" > xsi:schemaLocation="http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> > <!-- > | This bean declares our AuthenticationManager. > The CentralAuthenticationService service bean > | declared in applicationContext.xml picks up this > AuthenticationManager by reference to its id, > | "authenticationManager". Most deployers will be > able to use the default AuthenticationManager > | implementation and so do not need to change the > class of this bean. We include the whole > | AuthenticationManager here in the > userConfigContext.xml so that you can see the things you will > | need to change in context. > +--> > > <bean id="contextSource" class=" > org.jasig.cas.adaptors.ldap.util.AuthenticatedLdapContextSource"> > <property name="urls"> > <list> > > <value>ldap://[DELETED]:389/OU=Accounts,OU=[DELETED],OU=[DELETED],DC=[DELETED],DC=[DELETED],DC=[DELETED]</value> > </list> > </property> > <property name="userName" value="[DELETED]"/> > <property name="password" value="[DELETED]"/> > <property name="baseEnvironmentProperties"> > <map> > <entry> > <key> > <value>java.naming.security.authentication</value> > </key> > <value>simple</value> > </entry> > </map> > </property> > </bean> > <bean id="authenticationManager" > class=" > org.jasig.cas.authentication.AuthenticationManagerImpl"> > <!-- > | This is the List of > CredentialToPrincipalResolvers that identify what Principal is trying to > authenticate. > | The AuthenticationManagerImpl > considers them in order, finding a CredentialToPrincipalResolver which > | supports the presented credentials. > | > | AuthenticationManagerImpl uses these > resolvers for two purposes. First, it uses them to identify the Principal > | attempting to authenticate to CAS > /login . In the default configuration, it is the > DefaultCredentialsToPrincipalResolver > | that fills this role. If you are > using some other kind of credentials than UsernamePasswordCredentials, you > will need to replace > | > DefaultCredentialsToPrincipalResolver with a CredentialsToPrincipalResolver > that supports the credentials you are > | using. > | > | Second, AuthenticationManagerImpl > uses these resolvers to identify a service requesting a proxy granting > ticket. > | In the default configuration, it is > the HttpBasedServiceCredentialsToPrincipalResolver that serves this purpose. > > | You will need to change this list if > you are identifying services by something more or other than their callback > URL. > +--> > <property name="credentialsToPrincipalResolvers"> > <list> > <!-- > | > UsernamePasswordCredentialsToPrincipalResolver supports the > UsernamePasswordCredentials that we use for /login > | by default > and produces SimplePrincipal instances conveying the username from the > credentials. > | > | If you've > changed your LoginFormAction to use credentials other than > UsernamePasswordCredentials then you will also > | need to > change this bean declaration (or add additional declarations) to declare a > CredentialsToPrincipalResolver that supports the > | Credentials > you are using. > +--> > <bean > class=" > org.jasig.cas.authentication.principal.UsernamePasswordCredentialsToPrincipalResolver" > > > <property > name="attributeRepository"> > > <ref bean="attributeRepository" /> > </property> > </bean> > <!-- > | > HttpBasedServiceCredentialsToPrincipalResolver supports > HttpBasedCredentials. It supports the CAS 2.0 approach of > | > authenticating services by SSL callback, extracting the callback URL from > the Credentials and representing it as a > | > SimpleService identified by that callback URL. > | > | If you are > representing services by something more or other than an HTTPS URL whereat > they are able to > | receive a > proxy callback, you will need to change this bean declaration (or add > additional declarations). > +--> > <bean > class=" > org.jasig.cas.authentication.principal.HttpBasedServiceCredentialsToPrincipalResolver" > /> > </list> > </property> > <!-- > | Whereas > CredentialsToPrincipalResolvers identify who it is some Credentials might > authenticate, > | AuthenticationHandlers actually > authenticate credentials. Here we declare the AuthenticationHandlers that > | authenticate the Principals that the > CredentialsToPrincipalResolvers identified. CAS will try these handlers in > turn > | until it finds one that both > supports the Credentials presented and succeeds in authenticating. > +--> > <property name="authenticationHandlers"> > <list> > <!-- > | This is the > authentication handler that authenticates services by means of callback via > SSL, thereby validating > | a server > side SSL certificate. > +--> > <bean class=" > org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler > " > > p:httpClient-ref="httpClient" /> > <!-- > | This is the > authentication handler declaration that every CAS deployer will need to > change before deploying CAS > | into > production. The default SimpleTestUsernamePasswordAuthenticationHandler > authenticates UsernamePasswordCredentials > | where the > username equals the password. You will need to replace this with an > AuthenticationHandler that implements your > | local > authentication strategy. You might accomplish this by coding a new such > handler and declaring > | > edu.someschool.its.cas.MySpecialHandler here, or you might use one of the > handlers provided in the adaptors modules. > +--> > <!-- > <bean > class=" > org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" > /> > --> > > <bean class=" > org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler"> > <property > name="filter" value="sAMAccountName=%u" /> > <property > name="searchBase" value="DC=[DELETED],DC=[DELETED],DC=[DELETED]" /> > <property > name="contextSource" ref="contextSource" /> > <property > name="ignorePartialResultException" value="yes" /> > </bean> > </list> > </property> > </bean> > > <!-- > This bean defines the security roles for the Services > Management application. Simple deployments can use the in-memory version. > More robust deployments will want to use another option, such > as the Jdbc version. > > The name of this should remain "userDetailsService" in order > for Acegi to find it. > > To use this, you should add an entry similar to the following > between the two value tags: > battags=notused,ROLE_ADMIN > > where battags is the username you want to grant access to. > You can put one entry per line. > --> > <bean id="userDetailsService" class=" > org.acegisecurity.userdetails.memory.InMemoryDaoImpl"> > <property name="userMap"> > <value> > </value> > </property> > </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.ldap.LdapPersonAttributeDao"> > <property name="baseDN" > > value="OU=[DELETED],OU=[DELETED],OU=[DELETED],DC=[DELETED],DC=[DELETED],DC=[DELETED]" > /> > <property name="principalAttributeName" > value="sAMAccountName" /> > > <!-- This query is used to find the entry for > populating attributes. {0} will be replaced by the new Principal ID > extracted from the ldap--> > <property name="query" > value="(sAMAccountName={0})" /> > <property name="contextSource" ref="contextSource" > /> > > </bean> > > <!-- > 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" /> > </beans> > -- > ++ Jonathan Hayward, [EMAIL PROTECTED] > ** To see an award-winning website with stories, essays, artwork, > ** games, and a four-dimensional maze, why not visit my home page? > ** All of this is waiting for you at http://JonathansCorner.com > _______________________________________________ > Yale CAS mailing list > [email protected] > http://tp.its.yale.edu/mailman/listinfo/cas > > -- -Scott Battaglia LinkedIn: http://www.linkedin.com/in/scottbattaglia
_______________________________________________ Yale CAS mailing list [email protected] http://tp.its.yale.edu/mailman/listinfo/cas
