...
Note |
---|
uPortal 3.1 introduces a new configuration which is different from all previous versions. You will NOT be able to copy and paste your previous configuration from any earlier version of uPortal. |
Step 1. Configure the ldap context in uportal-impl/src/main/resources/properties/contexts/ldapContext.xml
Code Block |
---|
|
<beans>
...
<bean id="defaultLdapContext" class="org.springframework.ldap.core.support.LdapContextSource">
<property name="url" value="ldap://ldap.myuniv.edu:389"/>
<property name="pooled" value="false"/>
<property name="userName" value=""/>
<property name="password" value=""/>
</bean>
...
</beans>
|
...
Code Block |
---|
|
<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 to uportal-impl/src/main/resources/properties/contexts/personDirectoryContext.xml
- Edit the cachingMergedPersonAttributeDao bean definition to add uPortalLdapAttributeSource under personAttributeDaos:
Code Block |
---|
|
<bean id="cachingMergedPersonAttributeDao" class="org.jasig.services.persondir.support.CachingPersonAttributeDaoImpl">
<property name="usernameAttributeProvider" ref="usernameAttributeProvider" />
<property name="cacheNullResults" value="true" />
<property name="userInfoCache">
...
</property>
<property name="cacheKeyGenerator" ref="userAttributeCacheKeyGenerator" />
<property name="cachedPersonAttributesDao" >
<bean class="org.jasig.services.persondir.support.MergingPersonAttributeDaoImpl">
<property name="usernameAttributeProvider" ref="usernameAttributeProvider" />
<property name="merger">
...
</property>
<property name="personAttributeDaos">
<list>
// add the line below
<ref bean="uPortalLdapAttributeSource"/>
<ref bean="cachinguPortalJdbcAttributeSource"/>
<ref bean="cachinguPortalJdbcUserSource"/>
</list>
</property>
</bean>
</property>
</bean>
|
- Next, add the LDAP attribute source bean definition to the same file. This is where you put your baseDN.
Code Block |
---|
|
<bean id="uPortalLdapAttributeSource" class="org.jasig.services.persondir.support.ldap.LdapPersonAttributeDao">
<property name="contextSource" ref="defaultLdapContext" />
<property name="baseDN" value="ou=department,o=university,c=edu" />
<property name="queryAttributeMapping">
<map>
<entry key="username" value="uid"/>
</map>
</property>
<property name="resultAttributeMapping">
<map>
<entry key="eduPersonPrimaryAffiliation">
<value>uPortalTemplateUserName</value>
</entry>
<entry key="eduPersonAffiliation">
<value>eduPersonAffiliation</value>
</entry>
<entry key="eduPersonNickname">
<set>
<value>eduPersonNickname</value>
<value>user.name.nickName</value>
</set>
</entry>
<entry key="eduPersonOrgDN">
<set>
<value>eduPersonOrgDN</value>
<value>user.employer</value>
</set>
</entry>
<entry key="eduPersonOrgUnitDN">
<set>
<value>eduPersonOrgUnitDN</value>
<value>user.department</value>
</set>
</entry>
<entry key="eduPersonPrimaryAffiliation">
<value>eduPersonPrimaryAffiliation</value>
</entry>
<entry key="eduPersonPrincipalName">
<value>eduPersonPrincipalName</value>
</entry>
<entry key="c">
<value>c</value>
</entry>
<entry key="cn">
<value>cn</value>
</entry>
<entry key="description">
<value>description</value>
</entry>
<entry key="displayName">
<value>displayName</value>
</entry>
<entry key="facsimileTelephoneNumber">
<value>facsimileTelephoneNumber</value>
</entry>
<entry key="givenName">
<set>
<value>givenName</value>
<value>user.name.given</value>
</set>
</entry>
<entry key="homePhone">
<value>homePhone</value>
</entry>
<entry key="homePostalAddress">
<value>homePostalAddress</value>
</entry>
<entry key="initials">
<value>initials</value>
</entry>
<entry key="jpegPhoto">
<value>jpegPhoto</value>
</entry>
<entry key="l">
<value>l</value>
</entry>
<entry key="labeledURI">
<value>labeledURI</value>
</entry>
<entry key="mail">
<set>
<value>mail</value>
<value>user.home-info.online.email</value>
</set>
</entry>
<entry key="mobile">
<value>mobile</value>
</entry>
<entry key="o">
<value>o</value>
</entry>
<entry key="ou">
<value>ou</value>
</entry>
<entry key="pager">
<value>pager</value>
</entry>
<entry key="postalAddress">
<value>postalAddress</value>
</entry>
<entry key="postalCode">
<value>postalCode</value>
</entry>
<entry key="postOfficeBox">
<value>postOfficeBox</value>
</entry>
<entry key="preferredLanguage">
<value>preferredLanguage</value>
</entry>
<entry key="seeAlso">
<value>seeAlso</value>
</entry>
<entry key="sn">
<set>
<value>sn</value>
<value>user.name.family</value>
</set>
</entry>
<entry key="st">
<value>st</value>
</entry>
<entry key="street">
<value>street</value>
</entry>
<entry key="telephoneNumber">
<value>telephoneNumber</value>
</entry>
<entry key="uid">
<value>uid</value>
</entry>
<entry key="userCertificate">
<value>userCertificate</value>
</entry>
<entry key="userSMIMECertificate">
<value>userSMIMECertificate</value>
</entry>
</map>
</property>
</bean>
|
- You may need to update the available attributes and query to match your server. Connections to Active Directory servers will most likely use a query of "(sAMAccountName={0})".
Step 3. Build and deploy the modifications
From the root of your uPortal source:
Code Block |
---|
ant clean deploy-ear
|
Step 4: Restart uPortal
Restart your tomcat server after deploying your modifications
Info |
---|
|
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 |
Warning |
---|
icon | false |
---|
title | Having problems with these instructions? |
---|
|
Please send us feedback at uportal-user@lists.ja-sig.org |