An update on this issue, we had the suggested modification and it resolved the issue. Users without an email specified in AD can auto login/register.
Anthony Avarca [email protected] 630.252.4940 On Fri, May 7, 2010 at 1:09 PM, Avarca, Anthony <[email protected]> wrote: > We are seeing a similar problem. Some of our AD accounts do not have an > email specified. We have the appropriate entries in the cfg file. Going to > try the approach suggested: > > Change: > > if ((ldap.ldapEmail!=null)&&(!ldap.ldapEmail.equals(""))) > > > to > > > if (ldap.ldapEmail == null) ldap.ldapEmail = ""; > if (true) > > > Anthony Avarca > [email protected] > 630.252.4940 > > > > On Mon, Apr 26, 2010 at 7:44 PM, Max McGrath <[email protected]>wrote: > >> Hi Stuart - >> >> Thanks for clarifying the rebuild and redeploy. >> >> Unfortunately, still no luck. >> >> I think I'll just start working on populating the e-mail field in LDAP. >> >> Thanks for all your help! I really appreciate it! >> >> Max >> >> -- >> Max McGrath >> Asst. Network Admin/Systems Specialist >> Carthage College >> 262-552-5512 >> [email protected] >> >> >> On Mon, Apr 26, 2010 at 4:02 PM, Stuart Lewis <[email protected]>wrote: >> >>> Hi Max, >>> >>> After making the change you need to re-build tomcat, and redeploy it. You >>> can do this by following steps 7, 8, and 9 in the installation guide: >>> >>> - http://www.dspace.org/1_6_0Documentation/ch03.html#N108B6 >>> >>> But at step 8, as this is not a new installation, you need to run 'ant >>> update' instead of 'ant fresh_install'. >>> >>> Thanks, >>> >>> >>> Stuart Lewis >>> IT Innovations Analyst and Developer >>> Te Tumu Herenga The University of Auckland Library >>> Auckland Mail Centre, Private Bag 92019, Auckland 1142, New Zealand >>> Ph: +64 (0)9 373 7599 x81928 >>> >>> >>> On 27/04/2010, at 8:57 AM, Max McGrath wrote: >>> >>> > Stuart - >>> > >>> > I made the change and then restarted Tomcat and it still is not working >>> for people that do not have their e-mail address in LDAP. >>> > >>> > Should I have done more than just restarting Tomcat? >>> > >>> > Thanks for all the help! >>> > -- >>> > Max McGrath >>> > Asst. Network Admin/Systems Specialist >>> > Carthage College >>> > 262-552-5512 >>> > [email protected] >>> > >>> > >>> > On Mon, Apr 26, 2010 at 3:46 PM, Stuart Lewis <[email protected]> >>> wrote: >>> > Hi Max, >>> > >>> > Yes - that's right. >>> > >>> > Change: >>> > >>> > if ((ldap.ldapEmail!=null)&&(!ldap.ldapEmail.equals(""))) >>> > >>> > >>> > to >>> > >>> > >>> > if (ldap.ldapEmail == null) ldap.ldapEmail = ""; >>> > if (true) >>> > >>> > >>> > (I've added an extra line there to hopefully catch another error that >>> could occur.) >>> > >>> > Thanks, >>> > >>> > >>> > Stuart Lewis >>> > IT Innovations Analyst and Developer >>> > Te Tumu Herenga The University of Auckland Library >>> > Auckland Mail Centre, Private Bag 92019, Auckland 1142, New Zealand >>> > Ph: +64 (0)9 373 7599 x81928 >>> > >>> > >>> > >>> > On 27/04/2010, at 4:15 AM, Max McGrath wrote: >>> > >>> > > Hi Stuart - >>> > > >>> > > Here is the code I am looking at: >>> > > >>> > > if ((ldap.ldapEmail!=null)&&(!ldap.ldapEmail.equals(""))) You want me >>> to change this to if (true) and then leave everything else the same??? >>> > > { >>> > > try >>> > > { >>> > > eperson = >>> EPerson.findByEmail(context, ldap.ldapEmail); >>> > > if (eperson!=null) >>> > > { >>> > > log.info >>> (LogManager.getHeader(context, >>> > > >>> "type=ldap-login", "type=ldap_but_already_email")); >>> > > >>> context.setIgnoreAuthorization(true); >>> > > >>> eperson.setNetid(netid.toLowerCase()); >>> > > >>> eperson.update(); >>> > > >>> context.commit(); >>> > > >>> context.setIgnoreAuthorization(false); >>> > > >>> context.setCurrentUser(eperson); >>> > > return SUCCESS; >>> > > } >>> > > else >>> > > { >>> > > if >>> (canSelfRegister(context, request, netid)) >>> > > { >>> > > // >>> TEMPORARILY turn off authorisation >>> > > try >>> > > { >>> > > >>> context.setIgnoreAuthorization(true); >>> > > >>> eperson = EPerson.create(context); >>> > > >>> if ((ldap.ldapEmail != null) && (!ldap.ldapEmail.equals(""))) >>> > > >>> { >>> > > >>> eperson.setEmail(ldap.ldapEmail); >>> > > >>> } >>> > > >>> else >>> > > >>> { >>> > > >>> eperson.setEmail(netid + >>> ConfigurationManager.getProperty("ldap.netid_email_domain")); >>> > > >>> } >>> > > >>> if ((ldap.ldapGivenName!=null) && (!ldap.ldapGivenName.equals(""))) >>> > > >>> { >>> > > >>> eperson.setFirstName(ldap.ldapGivenName); >>> > > >>> } >>> > > >>> if ((ldap.ldapSurname!=null) && (!ldap.ldapSurname.equals(""))) >>> > > >>> { >>> > > >>> eperson.setLastName(ldap.ldapSurname); >>> > > >>> } >>> > > >>> if ((ldap.ldapPhone!=null)&&(!ldap.ldapPhone.equals(""))) >>> > > >>> { >>> > > >>> eperson.setMetadata("phone", ldap.ldapPhone); >>> > > >>> } >>> > > >>> eperson.setNetid(netid.toLowerCase()); >>> > > >>> eperson.setCanLogIn(true); >>> > > >>> AuthenticationManager.initEPerson(context, request, eperson); >>> > > >>> eperson.update(); >>> > > >>> context.commit(); >>> > > >>> context.setCurrentUser(eperson); >>> > > } >>> > > catch >>> (AuthorizeException e) >>> > > { >>> > > >>> return NO_SUCH_USER; >>> > > } >>> > > finally >>> > > { >>> > > >>> context.setIgnoreAuthorization(false); >>> > > } >>> > > >>> > > >>> log.info(LogManager.getHeader(context, "authenticate", >>> > > >>> "type=ldap-login, created ePerson")); >>> > > return >>> SUCCESS; >>> > > } >>> > > else >>> > > { >>> > > // No >>> auto-registration for valid certs >>> > > >>> log.info(LogManager.getHeader(context, >>> > > >>> "failed_login", "type=ldap_but_no_record")); >>> > > return >>> NO_SUCH_USER; >>> > > } >>> > > } >>> > > } >>> > > >>> > > -- >>> > > Max McGrath >>> > > Asst. Network Admin/Systems Specialist >>> > > Carthage College >>> > > 262-552-5512 >>> > > [email protected] >>> > > >>> > > >>> > > On Thu, Apr 22, 2010 at 9:28 PM, Stuart Lewis < >>> [email protected]> wrote: >>> > > Hi Max, >>> > > >>> > > Yes - looks like there's a bit of a logic flow problem going on there >>> - the check for an empty email is being performed twice, and the first is >>> not needed. Try looking at >>> [dsapce-src]/dspace-api/src/main/java/org/dspace/authenticate/LDAPHierarchicalAuthentication.java >>> and find the line: >>> > > >>> > > if ((ldap.ldapEmail!=null)&&(!ldap.ldapEmail.equals(""))) >>> > > >>> > > (about line 254) and change it to: >>> > > >>> > > if (true) >>> > > >>> > > Rebuild, redeploy etc. If may throw a null pointer exception, if so, >>> add just before the if statement: >>> > > >>> > > if (ldap.ldapEmail == null) ldap.ldapEmail = ""; >>> > > >>> > > If this fixes the problem, we'll look at getting it corrected in the >>> next release. >>> > > >>> > > Thanks, >>> > > >>> > > >>> > > Stuart Lewis >>> > > IT Innovations Analyst and Developer >>> > > Te Tumu Herenga The University of Auckland Library >>> > > Auckland Mail Centre, Private Bag 92019, Auckland 1142, New Zealand >>> > > Ph: +64 (0)9 373 7599 x81928 >>> > > >>> > > >>> > > >>> > > On 23/04/2010, at 2:19 PM, Max McGrath wrote: >>> > > >>> > > > That could very well be the case as we do not have the e-mail >>> address field populated in LDAP. But I thought the following code would >>> take care of that: >>> > > > >>> > > > # If your LDAP server does not hold an email address for a user, >>> you can use >>> > > > # the following field to specify your email domain. This value is >>> appended >>> > > > # to the netid in order to make an email address. E.g. a netid of >>> 'user' and >>> > > > # ldap.netid_email_domain as '@example.com' would set the email of >>> the user >>> > > > # to be '[email protected] >>> > > > ldap.netid_email_domain = @carthage.edu >>> > > > -- >>> > > > Max McGrath >>> > > > Asst. Network Admin/Systems Specialist >>> > > > Carthage College >>> > > > 262-552-5512 >>> > > > [email protected] >>> > > > >>> > > > >>> > > > On Thu, Apr 22, 2010 at 9:12 PM, Stuart Lewis < >>> [email protected]> wrote: >>> > > > Hi Max, >>> > > > >>> > > > This code has been stable for a while and is working in a lot of >>> installations, so hopefully there is no bug. One possible cause is that the >>> email address is not being returned from the LDAP query. If there is no >>> email address then an eperson record cannot be created. >>> > > > >>> > > > Check that the following setting is correctly configured in >>> dspace.cfg: >>> > > > >>> > > > ldap.email_field = mail >>> > > > >>> > > > Thanks, >>> > > > >>> > > > >>> > > > Stuart Lewis >>> > > > IT Innovations Analyst and Developer >>> > > > Te Tumu Herenga The University of Auckland Library >>> > > > Auckland Mail Centre, Private Bag 92019, Auckland 1142, New Zealand >>> > > > Ph: +64 (0)9 373 7599 x81928 >>> > > > >>> > > > >>> > > > On 23/04/2010, at 1:48 PM, Max McGrath wrote: >>> > > > >>> > > > > Yes, I do have that set to true and the ePersons are still not >>> being created. >>> > > > > -- >>> > > > > Max McGrath >>> > > > > Asst. Network Admin/Systems Specialist >>> > > > > Carthage College >>> > > > > 262-552-5512 >>> > > > > [email protected] >>> > > > > >>> > > > > >>> > > > > On Thu, Apr 22, 2010 at 1:33 PM, <[email protected]> wrote: >>> > > > > Hi, Max. I'm glad you have LDAP auth working now. >>> > > > > >>> > > > > Do you have webui.ldap.autoregister = true in your dspace.cfg? >>> > > > > >>> > > > > We don't have webui.ldap.autoregister set to true, currently, and >>> we do create all e-person accounts manually for those faculty and staff that >>> need to access DSpace to add or edit objects. We were hoping to turn on >>> webui.ldap.autoregister this summer. >>> > > > > >>> > > > > -- >>> > > > > Stacy Pennington >>> > > > > Rhodes College >>> > > > > [email protected] >>> > > > > (901) 843-3968 >>> > > > > >>> > > > > >>> > > > > --------------------------- >>> > > > > From: Max McGrath [mailto:[email protected]] >>> > > > > Sent: Thursday, April 22, 2010 11:57 AM >>> > > > > To: Pennington_Stacy >>> > > > > Cc: [email protected] >>> > > > > Subject: Re: [Dspace-tech] LDAP with DSpace >>> > > > > >>> > > > > Thanks again Stacy! >>> > > > > >>> > > > > You, however, have been unsuccessful at getting this to >>> automatically create a new ePerson, correct? >>> > > > > >>> > > > > I don't have access to my logs right now, but I can see that LDAP >>> authentication is working, but creating a new ePerson is failing and >>> therefore, not letting me login! >>> > > > > >>> > > > > Is my only option to manually create an ePerson for every person >>> who could potentially login? >>> > > > > -- >>> > > > > Max McGrath >>> > > > > Asst. Network Admin/Systems Specialist >>> > > > > Carthage College >>> > > > > 262-552-5512 >>> > > > > [email protected] >>> > > > > >>> > > > > >>> > > > > <ATT00001..txt><ATT00002..txt> >>> > > > >>> > > > >>> > > > >>> > > > >>> > > >>> > > >>> > > >>> > >>> > >>> > >>> > >>> >>> >>> >>> >> >> >> ------------------------------------------------------------------------------ >> >> _______________________________________________ >> DSpace-tech mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/dspace-tech >> >> >
------------------------------------------------------------------------------
_______________________________________________ DSpace-tech mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/dspace-tech

