[Deploying Sakai] Active Directory Integration

Daniel McCallum dmccallum at unicon.net
Wed May 5 12:46:52 PDT 2010


The null business is probably a red herring.

Can you crank up logging to DEBUG and attach the output please?

E.g. add the following to [sakai|local].properties:

log.config.count=1
log.config.1=DEBUG.edu.amc.sakai.user

- Dan

Frizzell, Ryan wrote:
> Thanks for the catch on that, it seems I attached a slightly incorrect
> version of the jldap-beans.XML. That error did cause startup issues.
> I’ve resolved that issue however the error in the previous message still
> exists.
> 
>  
> 
> I’ve done some more digging and it sounds like, from the error it might
> be related to the null EID option in the XML config however currently it
> is disabled. Will turning on the eidValidator in the config file and
> setting it to verify based on some pattern stop the null searching? The
> error looks like, even though its been supplied a username that the ldap
> search is still working with a null value.
> 
>  
> 
> Thanks,
> 
>  
> 
> Ryan
> 
>  
> 
> Here’s an updated version of the jldap-beans.xml:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> 
> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
> "http://www.springframework.org/dtd/spring-beans.dtd">
> 
>  
> 
> <beans>
> 
>  
> 
>             <bean id="org.sakaiproject.user.api.UserDirectoryProvider"
> 
>                        
> class="edu.amc.sakai.user.JLDAPDirectoryProvider" init-method="init"
> 
>                         destroy-method="destroy" singleton="true">
> 
>                        
> 
>                         <!-- Required. Host name or address of your LDAP
> server -->
> 
>                         <property name="ldapHost">
> 
>                                     <value>myhost.domain.net</value>
> 
>                         </property>
> 
>  
> 
>                         <!-- Optional. LDAP connection port. Typically
> defaults to
> 
>                                    
> JLDAPDirectoryProvider.DEFAULT_LDAP_PORT (389). Secured
> 
>                                     connections are usually on 636 -->
> 
>                         <!-- property name="ldapPort">
> 
>                                     <value>389</value>
> 
>                         </property-->
> 
>  
> 
>                         <!--  If secureConnection is true, a keystore
> location must be provided
> 
>                                     unless javax.net.ssl.trustStore
> system property has already been
> 
>                                     set -->
> 
>                         <!--property name="keystoreLocation">
> 
>                                     <value>/usually/set/at/startup</value>
> 
>                         </property-->
> 
>  
> 
>                         <!--  If secureConnection is true, a keystore
> password must be provided
> 
>                                     unless
> javax.net.ssl.trustStorePassword system property has already
> 
>                                     been set -->
> 
>                         <!--property name="keystorePassword">
> 
>                                     <value>usually-set-at-startup</value>
> 
>                         </property-->
> 
>  
> 
>                         <!-- Optional. DN to which to bind for directory
> searches.
> 
>                                     Typically only necessary if autoBind
> is true -->
> 
>                         <property name="ldapUser">
> 
>                                    
> <value>CN=lmsDemoAuth,OU=lms,OU=test,DC=mydomain,DC=net</value>
> 
>                         </property>
> 
>  
> 
>                         <!-- Optional. Password for ldapUser defined
> above -->
> 
>                         <property name="ldapPassword">
> 
>                                     <value>secret</value>
> 
>                         </property>
> 
>  
> 
>                         <!-- Optional. Enables/disables secure LDAP
> connections.
> 
>                                     defaults to
> JLDAPDirectoryProvider.DEFAULT_IS_SECURE_CONNECTION (false) -->
> 
>                         <!-- property name="secureConnection">
> 
>                                     <value>false</value>
> 
>                         </property -->
> 
>  
> 
>                         <!-- Optional. If secureConnection is true, this
> socket factory
> 
>                                     will be assigned globally to
> LDAPConnections. Defaults to an
> 
>                                     instance of
> com.novell.ldap.LDAPJSSESecureSocketFactory, which
> 
>                                     is appropriate for SSL connections. Use
> 
>                                    
> com.novell.ldap.LDAPJSSEStartTLSFactory for TLS. -->
> 
>                         <!-- property name="secureSocketFactory">
> 
>                                     <bean
> class="com.novell.ldap.LDAPJSSESecureSocketFactory" />
> 
>                         </property -->
> 
>  
> 
>                         <!-- Optional. Indicate if connection allocation
> should
> 
>                                     implicitly bind as ${ldapUser}.
> Defaults to false -->
> 
>                         <property name="autoBind">
> 
>                                     <value>true</value>
> 
>                         </property>
> 
>  
> 
>                         <!-- Optional, but usually specified. Base DN
> for directory searches. -->
> 
>                         <property name="basePath">
> 
>                                     <value>dc=mydomain,dc=net</value>
> 
>                         </property>
> 
>  
> 
>                         <!-- Optional. Indicate if connections should follow
> 
>                                     referrals. Defaults to 
> 
>                                    
> JLDAPDirectoryProvider.DEFAULT_IS_FOLLOW_REFERRALS (false)-->
> 
>                         <property name="followReferrals">
> 
>                                     <value>true</value>
> 
>                         </property>
> 
>  
> 
>                         <!-- Optional. LDAP operation timeout in millis.
> Defaults
> 
>                                     to
> JLDAPDirectoryProvider.DEFAULT_OPERATION_TIMEOUT_MILLIS (5000) -->
> 
>                         <!-- property name="operationTimeout">
> 
>                                     <value>5000</value>
> 
>                         </property -->
> 
>  
> 
>                         <!-- Optional. User entry cache ttl in millis.
> Defaults
> 
>                                     to
> JLDAPDirectoryProvider.DEFAULT_CACHE_TTL (300000)-->
> 
>                         <property name="cacheTTL">
> 
>                                     <value>300000</value>
> 
>                         </property>
> 
>  
> 
>                         <!-- Optional. Control case-sensitivity of cache
> keys (User.eid values).
> 
>                              Defaults to false. (Note that this is a
> departure from historical
> 
>                              behavior.) -->
> 
>                         <property name="caseSensitiveCacheKeys">
> 
>                                     <value>false</value>
> 
>                         </property>
> 
>                        
> 
>                         <!--  Optional. Control the return value of
> 
>                              
> JLDAPDirectoryProvider.authenticateWithProviderFirst(String)
> 
>                               on a global basis. Defaults to
> 
>                              
> JLDAPDirectoryProvider.DEFAULT_AUTHENTICATE_WITH_PROVIDER_FIRST.  -->
> 
>                         <!--  property name="authenticateWithProviderFirst">
> 
>                                     <value>false</value>
> 
>                         </property -->
> 
>                        
> 
>                         <!--  Optional. Control whether or not
> authentication is attempted
> 
>                               on a global basis. "true" enables
> authentication attempts (but
> 
>                               does not automatically grant all authN
> attempts), "false"
> 
>                               short-circuits that process and refuses
> all authN
> 
>                               attempts.  Defaults to
> 
>                              
> JLDAPDirectoryProvider.DEFAULT_ALLOW_AUTHENTICATION  -->
> 
>                         <!--  property name="allowAuthentication">
> 
>                                     <value>true</value>
> 
>                         </property -->
> 
>                        
> 
>                         <!-- Optional. Defaults to an instance of
> 
>                         edu.amc.sakai.user.SimpleLdapConnectionManager -->
> 
>                         <!-- property name="ldapConnectionManager">
> 
>                                     <bean
> class="edu.amc.sakai.user.SimpleLdapConnectionManager" />
> 
>                         </property -->
> 
>  
> 
>                         <!-- Optional. Use Connection Pooling?
> 
>                                     Defaults to
> JLDAPDirectoryProvider.DEFAULT_POOLING (false).
> 
>                                     Has no effect if
> ldapConnectionManager has been explicitly
> 
>                                     assigned (unless that object honors
> this flag, of course). -->
> 
>                         <!--  property name="pooling">
> 
>                                     <value>false</value>
> 
>                         </property -->
> 
>  
> 
>                         <!-- Optional. Maxmimum number of connections in
> the pool
> 
>                                     Defaults to
> JLDAPDirectoryProvider.DEFAULT_POOL_MAX_CONNS (10) -->
> 
>                         <!--  property name="poolMaxConns">
> 
>                                     <value>10</value>
> 
>                         </property -->
> 
>                        
> 
>                         <!-- Optional. Defaults to an instance of
> 
>                         edu.amc.sakai.user.SimpleLdapAttributeMapper -->
> 
>                         <property name="ldapAttributeMapper">
> 
>                                     <ref
> bean="edu.amc.sakai.user.LdapAttributeMapper" />
> 
>                         </property>
> 
>                        
> 
>                         <!-- Optional. Only considered if
> ldapAttributeMapper is not explicitly
> 
>                         assigned. That is, if you choose to use the
> default LdapAttributeMapper
> 
>                         implementation, it is sufficient to specify
> attribute mappings here
> 
>                         and dispense with defining a
> edu.amc.sakai.user.LdapAttributeMapper bean.
> 
>                         This preserves forward compatibility of pre-2.5
> config -->
> 
>                         <!--  property name="attributeMappings">
> 
>                                     <map>
> 
>                                                 <entry
> key="logicalAttrName">
> 
>                                                            
> <value>physicalAttrName</value>
> 
>                                                 </entry>
> 
>                                     </map>
> 
>                         </property -->
> 
>                        
> 
>                         <!-- Optional. Defaults to allowing searches on
> any EID, including empty
> 
>                         and null Strings. -->
> 
>                         <!-- property name="eidValidator">
> 
>                                     <bean
> class="edu.amc.sakai.user.RegexpBlacklistEidValidator">
> 
>                                                 <property
> name="regexpFlags">
> 
>                                                             <bean
> id="java.util.regex.Pattern.CASE_INSENSITIVE"
> 
>                                                                        
> class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"
> />
> 
>                                                 </property>
> 
>                                                 <property
> name="eidBlacklist">
> 
>                                                             <list>
> 
>                                                                        
> <value>guest</value>
> 
>                                                                        
> <value>nobody</value>
> 
>                                                                        
> <value>adversary</value>
> 
>                                                             </list>
> 
>                                                 </property>
> 
>                                     </bean>
> 
>                         </property -->
> 
>                        
> 
>             </bean>
> 
>                                    
> 
>     <!-- An optional bean definition which can be used to customize LDAP
> 
>     attribute to Sakai User instance member mapping behaviors. This
> 
>     example describes availabel configuration options for
> SimpleLdapAttributeMapper
> 
>     (the default LdapAttributeMapper implementation). -->
> 
>             <bean id="edu.amc.sakai.user.LdapAttributeMapper"
> 
>                                    
> class="edu.amc.sakai.user.SimpleLdapAttributeMapper"
> 
>                                     init-method="init"
> 
>                                     singleton="true">
> 
>                                    
> 
>                         <!-- A typical set of attribute mappings. Keys
> are logical
> 
>                         names expected by the application. Values are
> physical LDAP
> 
>                         attribute names. If not specified or empty,
> defaults to
> 
>                         AttributeMappingConstants.DEFAULT_ATTR_MAPPINGS. -->
> 
>                         <property name="attributeMappings">
> 
>                                     <map>
> 
>                                                 <entry
> key="login"><value>sAMAccountName</value></entry>        
> 
>                                                 <entry
> key="firstName"><value>givenName</value></entry>
> 
>                                                 <entry
> key="lastName"><value>sn</value></entry>
> 
>                                                 <entry
> key="email"><value>mail</value></entry> 
> 
>                                                     
> 
>                                     </map>
> 
>                         </property>
> 
>                        
> 
>                         <!-- Several options for calculating Sakai user
> types based
> 
>                         on LDAP attributes. Defaults to an instance of
> EmptyStringUserTypeMapper -->
> 
>                         <property name="userTypeMapper">
> 
>                                     <!-- Select one of the following
> beans -->
> 
>                                     <ref
> bean="edu.amc.sakai.user.EmptyStringUserTypeMapper" />
> 
>                                     <!-- ref
> bean="edu.amc.sakai.user.EntryAttributeToUserTypeMapper" /-->
> 
>                                     <!-- ref
> bean="edu.amc.sakai.user.EntryContainerRdnToUserTypeMapper" /-->
> 
>                         </property>
> 
>                        
> 
>             </bean>
> 
>            
> 
>            
> 
>             <!-- /// Begin Sample UserTypeMapper Beans /// -->
> 
>            
> 
>             <!-- Will usually only need at most one of the following
> UserTypeMapper
> 
>             beans. Three "standard" options shown here for documentation
> purposes. The
> 
>             "active" bean will be selected by a bean reference in the
> userTypeMapper
> 
>             property definition above. -->
> 
>            
> 
>             <!-- EmptyStringUserTypeMapper assigns gives all users an
> 
>             empty string as their Sakai "type" -->
> 
>             <bean id="edu.amc.sakai.user.EmptyStringUserTypeMapper"
> 
>                         class="edu.amc.sakai.user.EmptyStringUserTypeMapper"
> 
>                         singleton="true" />
> 
>                        
> 
>             <!-- EntryAttributeToUserTypeMapper calculates Sakai user
> 
>                         types by simply passing attribute values through
> a map with
> 
>                         configurable "miss" behavior. -->
> 
>             <bean id="edu.amc.sakai.user.EntryAttributeToUserTypeMapper"
> 
>                        
> class="edu.amc.sakai.user.EntryAttributeToUserTypeMapper"
> 
>                         singleton="true">
> 
>                        
> 
>                         <!-- Optional. If not present or empty, behavior is
> 
>                         determined by the value of
> returnLiteralAttributeValueIfNoMapping
> 
>                         (see below). -->
> 
>                         <!-- property
> name="attributeValueToSakaiUserTypeMap">
> 
>                                     <map>
> 
>                                                 <entry
> key="faculty"><value>faculty</value></entry>
> 
>                                                 <entry
> key="students"><value>student</value></entry>
> 
>                                     </map>
> 
>                         </property -->
> 
>                                                
> 
>                         <!-- Required. The logical name of the LDAP
> attribute which
> 
>                         defines Sakai users' types. Value should be a
> key into the
> 
>                         attribute mappings associated with this
> LdapAttributeMapper
> 
>                         instance. -->
> 
>                         <property name="logicalAttributeName">
> 
>                                     <value>groupMembership</value>
> 
>                         </property>
> 
>                                                
> 
>                         <!-- Optional. Defaults to false -->
> 
>                         <!--  property
> name="returnLiteralAttributeValueIfNoMapping">
> 
>                                     <value>false</value>
> 
>                         </property -->
> 
>                                                
> 
>                         <!-- Optional. Only considered if
> returnLiteralAttributeValueIfNoMapping
> 
>                                     is false. Defaults to null. -->
> 
>                         <!--  property name="defaultSakaiUserType">
> 
>                                     <null />
> 
>                         </property -->
> 
>                        
> 
>             </bean>
> 
>            
> 
>             <!-- EntryContainerRdnToUserTypeMapper calculates Sakai user
> 
>                         types by filtering a user entry's most-local RDN
> through the
> 
>                         assigned map. -->
> 
>             <bean id="edu.amc.sakai.user.EntryContainerRdnToUserTypeMapper"
> 
>                        
> class="edu.amc.sakai.user.EntryContainerRdnToUserTypeMapper"
> 
>                         singleton="true">
> 
>                        
> 
>                         <!-- Optional. Maps between container RDN values
> and Sakai user types -->
> 
>                         <!-- property name="rdnToSakaiUserTypeMap">
> 
>                                     <map>
> 
>                                                 <entry
> key="facultyStaff"><value>faculty</value></entry>
> 
>                                                 <entry
> key="students"><value>student</value></entry>
> 
>                                     </map>
> 
>                         </property -->
> 
>                                                
> 
>                         <!-- Optional. Defaults to false.  -->
> 
>                         <!-- property
> name="returnLiteralRdnValueIfNoMapping">
> 
>                                     <value>false</value>
> 
>                         </property -->
> 
>                        
> 
>             </bean>
> 
>                        
> 
>             <!-- /// End Sample UserTypeMapper Beans /// -->
> 
>            
> 
> </beans>:
> 
>  
> 
> *From:* Mike De Simone [mailto:michael.desimone at rsmart.com]
> *Sent:* Wednesday, May 05, 2010 12:48 PM
> *To:* Frizzell, Ryan
> *Cc:* production at collab.sakaiproject.org
> *Subject:* Re: [Deploying Sakai] Active Directory Integration
> 
>  
> 
> one quick thing I can see is the ldapPassword property has an XML syntax
> error.  the --> at the end of the element is there but the beginning of
> the comment <!-- is not.  This seems like it would cause spring to fail
> on startup, and since that doesn't appear to be happening, I'm not
> entirely sure this would cause your problems, but probably isn't helping
> things either :)
> 
> 
> 
> Thanks,
> 
> -------------------------------
> Mike DeSimone
> Sr. Technical Consultant
> rSmart
> tel: 602-490-0473
> icq: 161896611
> 
> On Wed, May 5, 2010 at 11:21, Frizzell, Ryan <rfrizzel at regis.edu
> <mailto:rfrizzel at regis.edu>> wrote:
> 
> Hello all,
> 
> I'm in the process of setting up a Sakai demo system with active
> directory integration. The error I'm running into upon attempts to
> authenticate is:
> 
> 2010-05-05 11:10:38,183  WARN http-8080-Processor19
> edu.amc.sakai.user.JLDAPDirectoryProvider - authenticateUser(): invalid
> credentials [userLogin = testUser]
> 2010-05-05 11:19:51,232 ERROR http-8080-Processor23
> edu.amc.sakai.user.JLDAPDirectoryProvider - getUser() failed [eid: null]
> LDAPException: Invalid Credentials (49) Invalid Credentials
> LDAPException: Server Message: 80090308: LdapErr: DSID-0C0903AA,
> comment: AcceptSecurityContext error, data 525, v1772
> LDAPException: Matched DN:
> 
> 
> 
> I've been browsing the mail lists and documentation but I can't seem to
> determine the cause of this issue. I'm using the JLDAP provider. Here is
> my configuration for JLDAP, I'm building from 2.6.2:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
> "http://www.springframework.org/dtd/spring-beans.dtd">
> 
> <beans>
> 
>        <bean id="org.sakaiproject.user.api.UserDirectoryProvider"
>                class="edu.amc.sakai.user.JLDAPDirectoryProvider"
> init-method="init"
>                destroy-method="destroy" singleton="true">
> 
>                <!-- Required. Host name or address of your LDAP server -->
>                <property name="ldapHost">
>                        <value>myhost.domain.net
> <http://myhost.domain.net></value>
>                </property>
> 
>                <!-- Optional. LDAP connection port. Typically defaults to
>                        JLDAPDirectoryProvider.DEFAULT_LDAP_PORT (389).
> Secured
>                        connections are usually on 636 -->
>                <!-- property name="ldapPort">
>                        <value>389</value>
>                </property-->
> 
>                <!--  If secureConnection is true, a keystore location
> must be provided
>                        unless javax.net.ssl.trustStore system property
> has already been
>                        set -->
>                <!--property name="keystoreLocation">
>                        <value>/usually/set/at/startup</value>
>                </property-->
> 
>                <!--  If secureConnection is true, a keystore password
> must be provided
>                        unless javax.net.ssl.trustStorePassword system
> property has already
>                        been set -->
>                <!--property name="keystorePassword">
>                        <value>usually-set-at-startup</value>
>                </property-->
> 
>                <!-- Optional. DN to which to bind for directory searches.
>                        Typically only necessary if autoBind is true -->
>                <property name="ldapUser">
>                      
>  <value>CN=lmsDemoAuth,OU=lms,OU=test,DC=mydomain,DC=net</value>
>                </property>
> 
>                <!-- Optional. Password for ldapUser defined above -->
>                <property name="ldapPassword">
>                        <value>secret</value>
>                </property -->
> 
>                <!-- Optional. Enables/disables secure LDAP connections.
>                        defaults to
> JLDAPDirectoryProvider.DEFAULT_IS_SECURE_CONNECTION (false) -->
>                <!-- property name="secureConnection">
>                        <value>false</value>
>                </property -->
> 
>                <!-- Optional. If secureConnection is true, this socket
> factory
>                        will be assigned globally to LDAPConnections.
> Defaults to an
>                        instance of
> com.novell.ldap.LDAPJSSESecureSocketFactory, which
>                        is appropriate for SSL connections. Use
>                        com.novell.ldap.LDAPJSSEStartTLSFactory for TLS. -->
>                <!-- property name="secureSocketFactory">
>                        <bean
> class="com.novell.ldap.LDAPJSSESecureSocketFactory" />
>                </property -->
> 
>                <!-- Optional. Indicate if connection allocation should
>                        implicitly bind as ${ldapUser}. Defaults to false -->
>                <property name="autoBind">
>                        <value>true</value>
>                </property>
> 
>                <!-- Optional, but usually specified. Base DN for
> directory searches. -->
>                <property name="basePath">
>                        <value>dc=mydomain,dc=net</value>
>                </property>
> 
>                <!-- Optional. Indicate if connections should follow
>                        referrals. Defaults to
>                      
>  JLDAPDirectoryProvider.DEFAULT_IS_FOLLOW_REFERRALS (false)-->
>                <property name="followReferrals">
>                        <value>true</value>
>                </property>
> 
>                <!-- Optional. LDAP operation timeout in millis. Defaults
>                        to
> JLDAPDirectoryProvider.DEFAULT_OPERATION_TIMEOUT_MILLIS (5000) -->
>                <!-- property name="operationTimeout">
>                        <value>5000</value>
>                </property -->
> 
>                <!-- Optional. User entry cache ttl in millis. Defaults
>                        to JLDAPDirectoryProvider.DEFAULT_CACHE_TTL
> (300000)-->
>                <property name="cacheTTL">
>                        <value>300000</value>
>                </property>
> 
>                <!-- Optional. Control case-sensitivity of cache keys
> (User.eid values).
>                     Defaults to false. (Note that this is a departure
> from historical
>                     behavior.) -->
>                <property name="caseSensitiveCacheKeys">
>                        <value>false</value>
>                </property>
> 
>                <!--  Optional. Control the return value of
>                    
>  JLDAPDirectoryProvider.authenticateWithProviderFirst(String)
>                      on a global basis. Defaults to
>                    
>  JLDAPDirectoryProvider.DEFAULT_AUTHENTICATE_WITH_PROVIDER_FIRST.  -->
>                <!--  property name="authenticateWithProviderFirst">
>                        <value>false</value>
>                </property -->
> 
>                <!--  Optional. Control whether or not authentication is
> attempted
>                      on a global basis. "true" enables authentication
> attempts (but
>                      does not automatically grant all authN attempts),
> "false"
>                      short-circuits that process and refuses all authN
>                      attempts.  Defaults to
>                      JLDAPDirectoryProvider.DEFAULT_ALLOW_AUTHENTICATION
>  -->
>                <!--  property name="allowAuthentication">
>                        <value>true</value>
>                </property -->
> 
>                <!-- Optional. Defaults to an instance of
>                edu.amc.sakai.user.SimpleLdapConnectionManager -->
>                <!-- property name="ldapConnectionManager">
>                        <bean
> class="edu.amc.sakai.user.SimpleLdapConnectionManager" />
>                </property -->
> 
>                <!-- Optional. Use Connection Pooling?
>                        Defaults to
> JLDAPDirectoryProvider.DEFAULT_POOLING (false).
>                        Has no effect if ldapConnectionManager has been
> explicitly
>                        assigned (unless that object honors this flag, of
> course). -->
>                <!--  property name="pooling">
>                        <value>false</value>
>                </property -->
> 
>                <!-- Optional. Maxmimum number of connections in the pool
>                        Defaults to
> JLDAPDirectoryProvider.DEFAULT_POOL_MAX_CONNS (10) -->
>                <!--  property name="poolMaxConns">
>                        <value>10</value>
>                </property -->
> 
>                <!-- Optional. Defaults to an instance of
>                edu.amc.sakai.user.SimpleLdapAttributeMapper -->
>                <property name="ldapAttributeMapper">
>                        <ref bean="edu.amc.sakai.user.LdapAttributeMapper" />
>                </property>
> 
>                <!-- Optional. Only considered if ldapAttributeMapper is
> not explicitly
>                assigned. That is, if you choose to use the default
> LdapAttributeMapper
>                implementation, it is sufficient to specify attribute
> mappings here
>                and dispense with defining a
> edu.amc.sakai.user.LdapAttributeMapper bean.
>                This preserves forward compatibility of pre-2.5 config -->
>                <!--  property name="attributeMappings">
>                        <map>
>                                <entry key="logicalAttrName">
>                                        <value>physicalAttrName</value>
>                                </entry>
>                        </map>
>                </property -->
> 
>                <!-- Optional. Defaults to allowing searches on any EID,
> including empty
>                and null Strings. -->
>                <!-- property name="eidValidator">
>                        <bean
> class="edu.amc.sakai.user.RegexpBlacklistEidValidator">
>                                <property name="regexpFlags">
>                                        <bean
> id="java.util.regex.Pattern.CASE_INSENSITIVE"
>                                              
>  class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"
> />
>                                </property>
>                                <property name="eidBlacklist">
>                                        <list>
>                                                <value>guest</value>
>                                                <value>nobody</value>
>                                                <value>adversary</value>
>                                        </list>
>                                </property>
>                        </bean>
>                </property -->
> 
>        </bean>
> 
>    <!-- An optional bean definition which can be used to customize LDAP
>    attribute to Sakai User instance member mapping behaviors. This
>    example describes availabel configuration options for
> SimpleLdapAttributeMapper
>    (the default LdapAttributeMapper implementation). -->
>        <bean id="edu.amc.sakai.user.LdapAttributeMapper"
>                        class="edu.amc.sakai.user.SimpleLdapAttributeMapper"
>                        init-method="init"
>                        singleton="true">
> 
>                <!-- A typical set of attribute mappings. Keys are logical
>                names expected by the application. Values are physical LDAP
>                attribute names. If not specified or empty, defaults to
>                AttributeMappingConstants.DEFAULT_ATTR_MAPPINGS. -->
>                <property name="attributeMappings">
>                        <map>
>                                <entry
> key="login"><value>sAMAccountName</value></entry>
>                                <entry
> key="firstName"><value>givenName</value></entry>
>                                <entry
> key="lastName"><value>sn</value></entry>
>                                <entry
> key="email"><value>mail</value></entry>
> 
>                        </map>
>                </property>
> 
>                <!-- Several options for calculating Sakai user types based
>                on LDAP attributes. Defaults to an instance of
> EmptyStringUserTypeMapper -->
>                <property name="userTypeMapper">
>                        <!-- Select one of the following beans -->
>                        <ref
> bean="edu.amc.sakai.user.EmptyStringUserTypeMapper" />
>                        <!-- ref
> bean="edu.amc.sakai.user.EntryAttributeToUserTypeMapper" /-->
>                        <!-- ref
> bean="edu.amc.sakai.user.EntryContainerRdnToUserTypeMapper" /-->
>                </property>
> 
>        </bean>
> 
> 
>        <!-- /// Begin Sample UserTypeMapper Beans /// -->
> 
>        <!-- Will usually only need at most one of the following
> UserTypeMapper
>        beans. Three "standard" options shown here for documentation
> purposes. The
>        "active" bean will be selected by a bean reference in the
> userTypeMapper
>        property definition above. -->
> 
>        <!-- EmptyStringUserTypeMapper assigns gives all users an
>        empty string as their Sakai "type" -->
>        <bean id="edu.amc.sakai.user.EmptyStringUserTypeMapper"
>                class="edu.amc.sakai.user.EmptyStringUserTypeMapper"
>                singleton="true" />
> 
>        <!-- EntryAttributeToUserTypeMapper calculates Sakai user
>                types by simply passing attribute values through a map with
>                configurable "miss" behavior. -->
>        <bean id="edu.amc.sakai.user.EntryAttributeToUserTypeMapper"
>                class="edu.amc.sakai.user.EntryAttributeToUserTypeMapper"
>                singleton="true">
> 
>                <!-- Optional. If not present or empty, behavior is
>                determined by the value of
> returnLiteralAttributeValueIfNoMapping
>                (see below). -->
>                <!-- property name="attributeValueToSakaiUserTypeMap">
>                        <map>
>                                <entry
> key="faculty"><value>faculty</value></entry>
>                                <entry
> key="students"><value>student</value></entry>
>                        </map>
>                </property -->
> 
>                <!-- Required. The logical name of the LDAP attribute which
>                defines Sakai users' types. Value should be a key into the
>                attribute mappings associated with this LdapAttributeMapper
>                instance. -->
>                <property name="logicalAttributeName">
>                        <value>groupMembership</value>
>                </property>
> 
>                <!-- Optional. Defaults to false -->
>                <!--  property name="returnLiteralAttributeValueIfNoMapping">
>                        <value>false</value>
>                </property -->
> 
>                <!-- Optional. Only considered if
> returnLiteralAttributeValueIfNoMapping
>                        is false. Defaults to null. -->
>                <!--  property name="defaultSakaiUserType">
>                        <null />
>                </property -->
> 
>        </bean>
> 
>        <!-- EntryContainerRdnToUserTypeMapper calculates Sakai user
>                types by filtering a user entry's most-local RDN through the
>                assigned map. -->
>        <bean id="edu.amc.sakai.user.EntryContainerRdnToUserTypeMapper"
>                class="edu.amc.sakai.user.EntryContainerRdnToUserTypeMapper"
>                singleton="true">
> 
>                <!-- Optional. Maps between container RDN values and
> Sakai user types -->
>                <!-- property name="rdnToSakaiUserTypeMap">
>                        <map>
>                                <entry
> key="facultyStaff"><value>faculty</value></entry>
>                                <entry
> key="students"><value>student</value></entry>
>                        </map>
>                </property -->
> 
>                <!-- Optional. Defaults to false.  -->
>                <!-- property name="returnLiteralRdnValueIfNoMapping">
>                        <value>false</value>
>                </property -->
> 
>        </bean>
> 
>        <!-- /// End Sample UserTypeMapper Beans /// -->
> 
> </beans>
> 
> 
> 
> _______________________________________________
> production mailing list
> production at collab.sakaiproject.org
> <mailto:production at collab.sakaiproject.org>
> http://collab.sakaiproject.org/mailman/listinfo/production
> 
> TO UNSUBSCRIBE: send email to
> production-unsubscribe at collab.sakaiproject.org
> <mailto:production-unsubscribe at collab.sakaiproject.org> with a subject
> of "unsubscribe"
> 
>  
> 
> ------------------------------------------------------------------------
> 
> 
> Spam <https://antispam.regis.edu/canit/b.php?i=10536556&m=f7135fd312cd&c=s>
> Not spam
> <https://antispam.regis.edu/canit/b.php?i=10536556&m=f7135fd312cd&c=n>
> Forget previous vote
> <https://antispam.regis.edu/canit/b.php?i=10536556&m=f7135fd312cd&c=f>
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> production mailing list
> production at collab.sakaiproject.org
> http://collab.sakaiproject.org/mailman/listinfo/production
> 
> TO UNSUBSCRIBE: send email to production-unsubscribe at collab.sakaiproject.org with a subject of "unsubscribe"


More information about the production mailing list