cancel
Showing results for 
Search instead for 
Did you mean: 

Login to ldap using email

hernanisaurelio
Confirmed Champ
Confirmed Champ

I am customizing Alfresco 5.2 and I would like you to help or guide me how I can implement the subsystem for logging in via email in LDAP.

4 REPLIES 4

EddieMay
World-Class Innovator
World-Class Innovator

Hi @hernanisaurelio 

For the general approach to LDAP you can consult the relevant documentation on authentication subsystems. For a visual guide to LDAP integration, see Angel Borroy's video for 5.2 LDAP configuration

For logging in via email, I presume you mean using an email address as the username? 

Digital Community Manager, Alfresco Software.
Problem solved? Click Accept as Solution!

Thank you so much for your time EddieMay

I can already integrate my application with LDAP, I am using OpenLDAP.
At the moment I can only login with the username.
And I really really need to login with the LDAP email id. How could I do that

Thank you very much in advance.

I found this old post https://hub.alfresco.com/t5/ecm-archive/ldap-authentication-ad-by-email/m-p/270967/highlight/true#M1..., but don't know if you are willing to modify DNs of users. Personally I wouldn't do it.

Here is something for Alfresco 5.1, 5.2 which involves coding and deeper knowledge of Alfresco: https://www.enprowess.com/blogs/alfresco-ldap-using-email/

You could use external authentication and setup Apache HTTPD proxy and authenticate users there. Check this attribute: https://httpd.apache.org/docs/2.4/mod/mod_authnz_ldap.html#authldapremoteuserattribute

In Apache, set this header:

RequestHeader set X-Alfresco-Remote-User %{RU}e

In alfresco-global.properties:

authentication.chain=external1:external,alfrescoNtlm1:alfrescoNtlm
external.authentication.enabled=true
external.authentication.proxyUserName=
external.authentication.proxyHeader=X-Alfresco-Remote-User
external.authentication.defaultAdministratorUserNames=admin

You have to modify also share-config-custom.xml https://docs.alfresco.com/content-services/6.1/admin/auth-sync/ (search for <userHeader>X-Alfresco-Remote-User</userHeader>).

Sorry for the delay

I've been studying tutorial

https://www.enprowess.com/blogs/alfresco-ldap-using-email/

I had to have the LDAPAuthenticationComponentImpl.class file

And I managed to manipulate the java code of this compiled file.

For me to be able to log in with the email I had to use "userName.substring (0, userName.indexOf ("@"))"
This allows me to enter the email I type, eg "john.smith@info.com".
However, the validation happens only with everything before the at sign, which means that I can type anything after the at sign eg: "info01.com" and the login is done.

Inside the tutorial I found this code 

            Attributes matchAttrs = new BasicAttributes(true);
            matchAttrs.put(new BasicAttribute(userEmailAttributeName, userName));

            NamingEnumeration<SearchResultanswer;
            String finalUser = null;

            try{
                answer = ctx.search(userSearchBase, matchAttrs);
                while (answer.hasMore()){
                    SearchResult result = answer.next();
                    finalUser = result.getName();
                }
                userName = finalUser != null ? finalUser.substring(finalUser.indexOf("@") + 1): "";
                return userName;
            }catch(NamingException e){
                e.getMessage();
            }
 
 

And I would like to know how I can capture the ldap email from the username "john.smith"
And then make a comparison with the email captured from the Ldap email and the email typed in the login screen.

I hope I have explained it in the best way

Thank you very much in advance.

Getting started

Explore our Alfresco products with the links below. Use labels to filter content by product module.