From bd9eb5b766a77b8961c40541f53f53213ddf7bf5 Mon Sep 17 00:00:00 2001 From: Felix Sidokhine <felix.sidokhine@randstad.ca> Date: Mon, 11 May 2020 12:32:30 +0300 Subject: [PATCH] fully functional AD and LDAP modules --- .../java/net/jami/jams/ad/connector/ADConnector.java | 2 +- .../jams/ad/connector/service/UserProfileService.java | 11 ++++++++--- .../main/java/net/jami/datastore/main/DataStore.java | 2 +- .../common/authentication/AuthenticationSource.java | 2 +- .../src/main/java/net/jami/jams/server/Server.java | 10 +++++----- .../net/jami/jams/ldap/connector/LDAPConnector.java | 2 +- .../ldap/connector/service/UserProfileService.java | 10 +++++++--- 7 files changed, 24 insertions(+), 15 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 0b270ced..29df5c55 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 @@ -67,7 +67,7 @@ public class ADConnector implements AuthenticationSource { } @Override - public UserProfile getUserProfile(String queryString, String field) { + public UserProfile[] getUserProfile(String queryString, String field) { return userProfileService.getUserProfile(queryString,field); } 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 c686d807..1bac115c 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 @@ -32,8 +32,9 @@ public class UserProfileService { fieldMap.put("o","Organization"); } - public UserProfile getUserProfile(String queryString, String field){ + public UserProfile[] getUserProfile(String queryString, String field){ Endpoint endpoint = ADConnector.getConnection(); + UserProfile[] profiles = null; try{ QueryRequest queryRequest = buildRequest(endpoint); Sentence sentence = null; @@ -51,8 +52,12 @@ public class UserProfileService { try(Connector connector = new Connector(queryRequest)) { queryResponse = connector.execute(); } - List<Field> fields = queryResponse.getAll().stream().map(EntityResponse::getValue).collect(Collectors.toList()).get(0); - return profileFromResponse(fields); + List<List<Field>> results = queryResponse.getAll().stream().map(EntityResponse::getValue).collect(Collectors.toList()); + if(results.size() > 0) profiles = new UserProfile[results.size()]; + for(int i=0;i< profiles.length; i++){ + profiles[i] = profileFromResponse(results.get(i)); + } + return profiles; } catch (Exception e){ log.error("Could not find entity with specified parameters."); diff --git a/datastore/src/main/java/net/jami/datastore/main/DataStore.java b/datastore/src/main/java/net/jami/datastore/main/DataStore.java index c8acdbe6..76ecca92 100644 --- a/datastore/src/main/java/net/jami/datastore/main/DataStore.java +++ b/datastore/src/main/java/net/jami/datastore/main/DataStore.java @@ -47,7 +47,7 @@ public class DataStore implements AuthenticationSource { } @Override - public UserProfile getUserProfile(String queryString, String field) { + public UserProfile[] getUserProfile(String queryString, String field) { return null; } diff --git a/jams-common/src/main/java/net/jami/jams/common/authentication/AuthenticationSource.java b/jams-common/src/main/java/net/jami/jams/common/authentication/AuthenticationSource.java index d2c95a25..ab1e1b5c 100644 --- a/jams-common/src/main/java/net/jami/jams/common/authentication/AuthenticationSource.java +++ b/jams-common/src/main/java/net/jami/jams/common/authentication/AuthenticationSource.java @@ -6,7 +6,7 @@ import net.jami.jams.common.objects.user.UserProfile; public interface AuthenticationSource { boolean createUser(User user); - UserProfile getUserProfile(String queryString, String field); + UserProfile[] getUserProfile(String queryString, String field); boolean authenticate(String username, String password); AuthenticationSourceInfo getInfo(); boolean testConfiguration(String configuration); diff --git a/jams-server/src/main/java/net/jami/jams/server/Server.java b/jams-server/src/main/java/net/jami/jams/server/Server.java index ecb00bbb..49c01881 100644 --- a/jams-server/src/main/java/net/jami/jams/server/Server.java +++ b/jams-server/src/main/java/net/jami/jams/server/Server.java @@ -57,12 +57,12 @@ public class Server { try { InputStream path; ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); - path = classLoader.getResourceAsStream("ldapconfig.json"); - userAuthenticationModule.attachLDAPAuthSource(new String(path.readAllBytes())); - UserProfile userProfile = userAuthenticationModule.getAuthenticationSources() - .get(new AuthModuleKey("savoirfairelinux", AuthenticationSourceType.LDAP)) + path = classLoader.getResourceAsStream("adsampleconfig.json"); + userAuthenticationModule.attachADAuthSource(new String(path.readAllBytes())); + UserProfile[] userProfile = userAuthenticationModule.getAuthenticationSources() + .get(new AuthModuleKey("SAVOIRFAIRELINU", AuthenticationSourceType.AD)) .getUserProfile("Sidokhine","FULL_TEXT_NAME"); - System.out.println(userProfile); + System.out.println(userProfile[0]); } catch (Exception e) { log.error("Could not load and inject active directory connector with error: " + e.toString()); } diff --git a/ldap-connector/src/main/java/net/jami/jams/ldap/connector/LDAPConnector.java b/ldap-connector/src/main/java/net/jami/jams/ldap/connector/LDAPConnector.java index 19421286..a1d38090 100644 --- a/ldap-connector/src/main/java/net/jami/jams/ldap/connector/LDAPConnector.java +++ b/ldap-connector/src/main/java/net/jami/jams/ldap/connector/LDAPConnector.java @@ -45,7 +45,7 @@ public class LDAPConnector implements AuthenticationSource { } @Override - public UserProfile getUserProfile(String queryString, String field) { + public UserProfile[] getUserProfile(String queryString, String field) { return userProfileService.getUserProfile(queryString,field); } 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 faff16aa..1f1f0471 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 @@ -29,7 +29,8 @@ public class UserProfileService { this.connectionFactory = connectionFactory; } - public UserProfile getUserProfile(String queryString, String field){ + public UserProfile[] getUserProfile(String queryString, String field){ + UserProfile[] profiles = null; Connection connection = null; try { connection = connectionFactory.getConnection(); @@ -37,8 +38,11 @@ public class UserProfileService { connection.open(); SearchOperation search = new SearchOperation(connectionFactory); SearchResponse res = search.execute(buildRequest(queryString,field)); - if (res.getEntries().size() > 0) return profileFromResponse(res.getEntry()); - return null; + if (res.getEntries().size() > 0) profiles = new UserProfile[res.getEntries().size()]; + for(int i=0; i< profiles.length; i++){ + profiles[i] = profileFromResponse(res.getEntry()); + } + return profiles; } catch (Exception e) { log.error("Could not search LDAP directory with error " + e.toString()); return null; -- GitLab