From d9e43dedc0078d2189b56c8e07e398f7bac82417 Mon Sep 17 00:00:00 2001 From: Felix Sidokhine <felix.sidokhine@randstad.ca> Date: Mon, 11 May 2020 13:24:39 +0300 Subject: [PATCH] made field mappings configurable --- .../jami/jams/ad/connector/ADConnector.java | 2 +- .../connector/service/UserProfileService.java | 14 +---------- .../ActiveDirectorySettings.java | 5 ++++ .../authentication/ldap/LDAPSettings.java | 3 +++ .../src/main/resources/adsampleconfig.json | 23 ++++++++++++++----- .../src/main/resources/ldapconfig.json | 13 ++++++++++- .../connector/service/UserProfileService.java | 14 +---------- 7 files changed, 40 insertions(+), 34 deletions(-) diff --git a/ad-connector/src/main/java/net/jami/jams/ad/connector/ADConnector.java b/ad-connector/src/main/java/net/jami/jams/ad/connector/ADConnector.java index 29df5c55..2be71eb9 100644 --- a/ad-connector/src/main/java/net/jami/jams/ad/connector/ADConnector.java +++ b/ad-connector/src/main/java/net/jami/jams/ad/connector/ADConnector.java @@ -19,7 +19,7 @@ import java.util.concurrent.ConcurrentLinkedQueue; public class ADConnector implements AuthenticationSource { private static final ConcurrentLinkedQueue<Endpoint> endpoints = new ConcurrentLinkedQueue<>(); - private static ActiveDirectorySettings settings; + public static ActiveDirectorySettings settings; private final AuthenticationService authenticationService = new AuthenticationService(); private final UserProfileService userProfileService = new UserProfileService(); diff --git a/ad-connector/src/main/java/net/jami/jams/ad/connector/service/UserProfileService.java b/ad-connector/src/main/java/net/jami/jams/ad/connector/service/UserProfileService.java index 1bac115c..ee7e1ba9 100644 --- a/ad-connector/src/main/java/net/jami/jams/ad/connector/service/UserProfileService.java +++ b/ad-connector/src/main/java/net/jami/jams/ad/connector/service/UserProfileService.java @@ -18,19 +18,7 @@ import java.util.stream.Collectors; @Slf4j public class UserProfileService { - private static final HashMap<String,String> fieldMap = new HashMap<>(); - - static{ - fieldMap.put("givenname","FirstName"); - fieldMap.put("sn","LastName"); - fieldMap.put("thumbnailPhoto","ProfilePicture"); - fieldMap.put("mail","Email"); - fieldMap.put("telephoneNumber","PhoneNumber"); - fieldMap.put("mobile","MobileNumber"); - fieldMap.put("facsimileTelephoneNumber","FaxNumber"); - fieldMap.put("extensionName","PhoneNumberExtension"); - fieldMap.put("o","Organization"); - } + private static final HashMap<String,String> fieldMap = ADConnector.settings.getFieldMappings(); public UserProfile[] getUserProfile(String queryString, String field){ Endpoint endpoint = ADConnector.getConnection(); diff --git a/jams-common/src/main/java/net/jami/jams/common/authentication/activedirectory/ActiveDirectorySettings.java b/jams-common/src/main/java/net/jami/jams/common/authentication/activedirectory/ActiveDirectorySettings.java index 55e262ba..bf1303d3 100644 --- a/jams-common/src/main/java/net/jami/jams/common/authentication/activedirectory/ActiveDirectorySettings.java +++ b/jams-common/src/main/java/net/jami/jams/common/authentication/activedirectory/ActiveDirectorySettings.java @@ -3,13 +3,18 @@ package net.jami.jams.common.authentication.activedirectory; import lombok.Getter; import lombok.Setter; +import java.util.HashMap; + @Getter @Setter public class ActiveDirectorySettings { + private Boolean ssl; private int port; private String realm; private String host; private String username; private String password; + private HashMap<String,String> fieldMappings; + } diff --git a/jams-common/src/main/java/net/jami/jams/common/authentication/ldap/LDAPSettings.java b/jams-common/src/main/java/net/jami/jams/common/authentication/ldap/LDAPSettings.java index f4fd0fc4..b4408782 100644 --- a/jams-common/src/main/java/net/jami/jams/common/authentication/ldap/LDAPSettings.java +++ b/jams-common/src/main/java/net/jami/jams/common/authentication/ldap/LDAPSettings.java @@ -3,6 +3,8 @@ package net.jami.jams.common.authentication.ldap; import lombok.Getter; import lombok.Setter; +import java.util.HashMap; + @Getter @Setter public class LDAPSettings { @@ -14,5 +16,6 @@ public class LDAPSettings { private String username; private String password; private String usernameField; + private HashMap<String,String> fieldMappings; } diff --git a/jams-server/src/main/resources/adsampleconfig.json b/jams-server/src/main/resources/adsampleconfig.json index b6ca19bf..bbb28b99 100644 --- a/jams-server/src/main/resources/adsampleconfig.json +++ b/jams-server/src/main/resources/adsampleconfig.json @@ -1,10 +1,21 @@ { - "ssl": false, - "port" : 389, - "realm": "SAVOIRFAIRELINU", - "host": "192.168.49.151", - "username": "cn=Administrator,cn=Users,dc=savoirfairelinux,dc=net", - "password": "abc123!" + "ssl": false, + "port": 389, + "realm": "SAVOIRFAIRELINU", + "host": "192.168.49.151", + "username": "cn=Administrator,cn=Users,dc=savoirfairelinux,dc=net", + "password": "abc123!", + "fieldMappings": { + "givenname": "FirstName", + "sn": "LastName", + "thumbnailPhoto": "ProfilePicture", + "mail": "Email", + "telephoneNumber": "PhoneNumber", + "mobile": "MobileNumber", + "facsimileTelephoneNumber": "FaxNumber", + "extensionName": "PhoneNumberExtension", + "o": "Organization" + } } diff --git a/jams-server/src/main/resources/ldapconfig.json b/jams-server/src/main/resources/ldapconfig.json index 54a125b2..18c12f0b 100644 --- a/jams-server/src/main/resources/ldapconfig.json +++ b/jams-server/src/main/resources/ldapconfig.json @@ -5,5 +5,16 @@ "host": "ldap://annuaire.savoirfairelinux.com", "username": "cn=sipallow,ou=dsa,dc=savoirfairelinux,dc=net", "password": "Dewaaghei3Yo", - "usernameField": "uid" + "usernameField": "uid", + "fieldMappings": { + "givenName":"FirstName", + "sn":"LastName", + "jpegPhoto":"ProfilePicture", + "mail":"Email", + "telephoneNumber":"PhoneNumber", + "mobile":"MobileNumber", + "facsimileTelephoneNumber":"FaxNumber", + "extensionName":"PhoneNumberExtension", + "o":"Organization" + } } \ No newline at end of file diff --git a/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java b/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java index 95c2e043..68e7ebe8 100644 --- a/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java +++ b/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java @@ -14,21 +14,9 @@ import java.util.Iterator; @Slf4j public class UserProfileService { - private static final HashMap<String,String> fieldMap = new HashMap<>(); + private static final HashMap<String,String> fieldMap = LDAPConnector.settings.getFieldMappings(); private final ConnectionFactory connectionFactory; - static{ - fieldMap.put("givenName","FirstName"); - fieldMap.put("sn","LastName"); - fieldMap.put("jpegPhoto","ProfilePicture"); - fieldMap.put("mail","Email"); - fieldMap.put("telephoneNumber","PhoneNumber"); - fieldMap.put("mobile","MobileNumber"); - fieldMap.put("facsimileTelephoneNumber","FaxNumber"); - fieldMap.put("extensionName","PhoneNumberExtension"); - fieldMap.put("o","Organization"); - } - public UserProfileService(ConnectionFactory connectionFactory) { this.connectionFactory = connectionFactory; } -- GitLab