[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