uPortal is capable of retrieving user attributes from an LDAP source. To configure this behavior, you'll need to do the following.

Step 1: Configure Ldap Settings

Option #1: Add ldap details in your properties file (version uPortal 4.0.9+)

Since uPortal 4.0.9, users can specify their ldap details in the properties file below (filters/local.properties). This feature comes in handy if you have multiple environments (development, test, production, etc..). You can create a properties file for each environment (i.e, dev.properties) and build uPortal with the specified properties file (ant clean deploy-war -Denv=dev). Without the -Denv parameter the local.properties file will be used by default. 

# LDAP server connection settings (optional)
# To connect to LDAP, provide your connection information here and uncomment one 
# or both integration beans in uportal-war/src/main/resources/properties/contexts/ldapContext.xml
environment.build.ldap.url=
environment.build.ldap.baseDn=
environment.build.ldap.userName=
environment.build.ldap.password=

Option #2: Edit the ldapContext.xml file

 
<bean id="defaultLdapContext_target" class="org.springframework.ldap.core.support.LdapContextSource">
        <property name="url" value="${ldap.url}"/>
        <property name="base" value="${ldap.baseDn}"/>
        <property name="userDn" value="${ldap.userName}"/>
        <property name="password" value="${ldap.password}"/>
        <property name="pooled" value="true"/>
</bean>

uPortal 4.0.3: If you are receiving the following error ()

[org.springframework.ldap.core.support.LdapContextSource]: Bean property 'userName' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?

Replace the property name, userName, in the defaultLdapContext bean above with userDn.

 

 <property name="baseEnvironmentProperties">
      <map>
        <entry>
          <key>
            <value>java.naming.security.authentication</value>
          </key>
          <value>simple</value>
        </entry>
        <entry key="java.naming.referral">
          <value>follow</value>
        </entry>
      </map>
 </property>

Step 2: Add an LDAP Attribute source

Step 3: Rebuild/Redeploy uPortal

From the root of your uPortal source:

ant clean deploy-war

Step 4: Restart uPortal

Restart your tomcat server after deploying your modifications

Additional References

uPortal mailing list Q&A related topic
     Q. Is there a way to use an attribute returned from an LdapPersonAttributeDao as the matching value for a SingleRowJdbcPersonAttributeDao?
     A. It does support this. Swap out the MergingPersonAttributeDao with the CascadingPersonAttributeDao and the results of child bean A get added to the query map for the next bean in the list.
         There are several examples here: https://mywebspace.wisc.edu/dalquist/web/JA-SIG/UWExamples/personDirectoryContext.xml

Please send us feedback at uportal-user@lists.ja-sig.org