[Building Sakai] SAKAI LDAP configuration
    Rashid, Amir 
    arashid at bu.edu
       
    Wed Jul  9 05:58:22 PDT 2014
    
    
  
Hi
Following properties are being used in the  jldap-beans.xml file.
Thanks,
--Amir
Amir Rashid - 617.358.2782
Boston University - SMG ITS
   <property name="memoryService">
                        <ref bean="org.sakaiproject.memory.api.MemoryService"/>
                </property>
                <!-- Required. Host name or address of your LDAP server -->
                <property name="ldapHost">
                        <value>XX.XX.XXX</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=XXXXXXX,OU=people,dc=XX,dc=XX,dc=XXX</value>
                </property>
                <!-- Optional. Password for ldapUser defined above -->
                <property name=“ldapPassword”>
                        <value>XXXXXXXXXX</value>
                </property>
                <!-- Optional. Enables/disables secure LDAP connections.
                        defaults to JLDAPDirectoryProvider.DEFAULT_IS_SECURE_CONNECTION (false) -->
                <property name="secureConnection">
                        <value>false</value>
                </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=XX,dc=XX,dc=XXX</value>
                </property>
                <!-- Optional. Indicate if connections should follow
                        referrals. Defaults to
                        JLDAPDirectoryProvider.DEFAULT_IS_FOLLOW_REFERRALS (false)-->
                <property name="followReferrals">
                        <value>false</value>
                </property>
<property name="caseSensitiveCacheKeys">
                        <value>false</value>
                </property>
  <property name="ldapAttributeMapper">
                        <ref bean="edu.amc.sakai.user.LdapAttributeMapper" />
                </property>
           <!-- Optional. If you don't provide an eidValidator the system
                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>null</value>
                                                <!--value>nobody</value-->
                                                <!--value>adversary</value-->
                                        </list>
                                </property>
                        </bean>
                </property>
                <property name="searchAliases"><value>false</value></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="preferredFirstName"><value>preferredName</value></entry-->
                                <entry key="lastName"><value>sn</value></entry>
                                <entry key="email"><value>mail</value></entry>
                                <entry key="groupMembership"><value>groupMembership</value></entry>
                                <!--entry key="jpegPhoto"><value>jpegPhoto</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" /-->
                        <ref bean="edu.amc.sakai.user.StringUserTypeMapper" />
                </property>
        </bean>
From: Steve Swinsburg <steve.swinsburg at gmail.com<mailto:steve.swinsburg at gmail.com>>
Date: Tuesday, July 8, 2014 at 11:56 PM
To: "Rashid, Amir" <arashid at bu.edu<mailto:arashid at bu.edu>>
Cc: "sakai-dev at collab.sakaiproject.org<mailto:sakai-dev at collab.sakaiproject.org>" <sakai-dev at collab.sakaiproject.org<mailto:sakai-dev at collab.sakaiproject.org>>
Subject: Re: [Building Sakai] SAKAI LDAP configuration
Looks like you need to provide a username and password in the LDAP config to get a bind. What are your LDAP settings from jldap-beans.xml ?
On Wed, Jul 9, 2014 at 5:36 AM, Rashid, Amir <arashid at bu.edu<mailto:arashid at bu.edu>> wrote:
Hi Folks,
I have 2.81 in production right now. I am using one of the test machine to install SAKAI 10. I am trying to configure it to use LDAP the same as 2.8. Included is the trace from the log file. I can intermittently log in if I try it a few times. Please let me know if there are any undocumented configuration  changes to the LDAP configuration settings .
 I will appreciate your help in this matter.
--Amir
Amir Rashid - 617.358.2782
Boston University - SMG ITS
2014-07-08 13:26:36,428  WARN ajp-bio-8009-exec-14 org.sakaiproject.portal.util.ErrorReporter - Bug Report bug-id: 573880ae-c5b0-42f5-8b47-534991e591a0 user: null usage-session: null time: Jul 8, 2014 13:26:36 user comment: null stack trace
org.sakaiproject.portal.api.PortalHandlerException: java.lang.RuntimeException: authenticateUser(): LDAPException during authentication attempt [userLogin = arashid][result code = Operations Error][error message = 00000000: LdapErr: DSID-0C090627, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, vece]
    at org.sakaiproject.portal.charon.handlers.ReLoginHandler.doPost(ReLoginHandler.java:50)
caused by: java.lang.RuntimeException: authenticateUser(): LDAPException during authentication attempt [userLogin = arashid][result code = Operations Error][error message = 00000000: LdapErr: DSID-0C090627, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, vece]
    at org.sakaiproject.user.impl.BaseUserDirectoryService.getProviderAuthenticatedUser(BaseUserDirectoryService.java:1668)
caused by: LDAPException: Operations Error (1) Operations Error
LDAPException: Server Message: 00000000: LdapErr: DSID-0C090627, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, vece
LDAPException: Matched DN:
    at com.novell.ldap.LDAPResponse.getResultException(null:-1)
    at com.novell.ldap.LDAPResponse.chkResultCode(null:-1)
    at com.novell.ldap.LDAPSearchResults.next(null:-1)
    at edu.amc.sakai.user.JLDAPDirectoryProvider.searchDirectory(JLDAPDirectoryProvider.java:959)
    at edu.amc.sakai.user.JLDAPDirectoryProvider.searchDirectoryForSingleEntry(JLDAPDirectoryProvider.java:856)
    at edu.amc.sakai.user.JLDAPDirectoryProvider.getUserByEid(JLDAPDirectoryProvider.java:778)
    at edu.amc.sakai.user.JLDAPDirectoryProvider.lookupUserBindDn(JLDAPDirectoryProvider.java:820)
    at edu.amc.sakai.user.JLDAPDirectoryProvider.authenticateUser(JLDAPDirectoryProvider.java:397)
    at org.sakaiproject.user.impl.BaseUserDirectoryService.getProviderAuthenticatedUser(BaseUserDirectoryService.java:1668)
    at org.sakaiproject.user.impl.BaseUserDirectoryService.authenticate(BaseUserDirectoryService.java:1611)
    at org.sakaiproject.user.impl.UserAuthnComponent.authenticate(UserAuthnComponent.java:108)
    at org.sakaiproject.login.impl.LoginServiceComponent.authenticate(LoginServiceComponent.java:90)
    at org.sakaiproject.login.tool.SkinnableLogin.doPost(SkinnableLogin.java:302)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:394)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:378)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338)
    at org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.help(ActiveToolComponent.java:583)
    at org.sakaiproject.portal.charon.SkinnableCharonPortal.doLogin(SkinnableCharonPortal.java:997)
    at org.sakaiproject.portal.charon.handlers.ReLoginHandler.doGet(ReLoginHandler.java:65)
    at org.sakaiproject.portal.charon.handlers.ReLoginHandler.doPost(ReLoginHandler.java:50)
    at org.sakaiproject.portal.charon.SkinnableCharonPortal.doPost(SkinnableCharonPortal.java:1296)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:455)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:193)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
Tool Placement:
No Placement
Request:
:    AuthType:null
:    CharEncoding:UTF-8
:    ContentLength:38
:    ContentType:application/x-www-form-urlencoded
:    ContextPath:/portal
:    LocalAddress:smgcms1.bu.edu<http://bu.edu/>
:    LocalName:smgcms1.bu.edu<http://smgcms1.bu.edu/>
:    LocalPort:443
:    Method:POST
:    PathInfo:/relogin
:    Protocol:HTTP/1.1
:    QueryString:null
:    RemoteAddress:168.122.33.194
:    RemoteHost:168.122.33.194
:    RemotePort:-1
:    Requested URL:https://smgcms1.bu.edu/portal/relogin<http://smgcms1.bu.edu/portal/relogin>
:    Scheme:https
:    ServerName:smgcms1.bu.edu<http://smgcms1.bu.edu/>
:    Headers:
:        Header:host:smgcms1.bu.edu<http://bu.edu/>
:        Header:connection:keep-alive
:        Header:content-length:38
:        Header:Cache-Control:max-age=0
:        Header:accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
:        Header:Origin:https://smgcms1.bu.edu<http://smgcms1.bu.edu/>
:        Header:user-agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
:        Header:content-type:application/x-www-form-urlencoded
:        Header:DNT:1
:        Header:referer:https://smgcms1.bu.edu/portal/login<http://smgcms1.bu.edu/portal/login>
:        Header:accept-encoding:gzip,deflate,sdch
:        Header:accept-language:en-US,en;q=0.8
:        Header:cookie:---censored---
:    Parameters:
:        Parameter:eid:0:----censored----
:        Parameter:pw:0:----censored----
:        Parameter:submit:0:Login
:    Attributes:
:        Attribute:javax.servlet.request.ssl_session:1C4C47A3FFAEEA4FAF017B65F33A916271C8B1293EB3487C9F7EEC25B8206C46
:        Attribute:javax.servlet.request.ssl_session_id:1C4C47A3FFAEEA4FAF017B65F33A916271C8B1293EB3487C9F7EEC25B8206C46
:        Attribute:sakai.character.encoding.done:sakai.character.encoding.done
:        Attribute:javax.servlet.request.key_size:128
:        Attribute:sakai.filtered:sakai.filtered
:        Attribute:javax.servlet.request.cipher_suite:DHE-RSA-AES128-SHA
:        Attribute:sakai.session:MyS_null{60cc469c-90b1-4a78-9bce-f06c3cc1c81a, userId='null', at=8, ts=2, cs=2, Tue Jul 08 13:24:53 EDT 2014}
Session:
:    Created:1404840293523
:    LastAccess:1404840396425
:    CreationDateAndTime:Tuesday, July 8, 2014
:    LastAccessDateAndTime:Tuesday, July 8, 2014
:    MaxInactive:3600
:    Attributes:
:        Attribute:portalskin:neoskin
_______________________________________________
sakai-dev mailing list
sakai-dev at collab.sakaiproject.org<mailto:sakai-dev at collab.sakaiproject.org>
http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe at collab.sakaiproject.org<mailto:sakai-dev-unsubscribe at collab.sakaiproject.org> with a subject of "unsubscribe"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://collab.sakaiproject.org/pipermail/sakai-dev/attachments/20140709/f0ab7b06/attachment.html 
    
    
More information about the sakai-dev
mailing list