From 34c0193ae2b4c132a75c9eebabbb038560439f66 Mon Sep 17 00:00:00 2001 From: chvostek Date: Mon, 2 Jun 2025 09:04:26 +0200 Subject: [PATCH 1/3] [NAE-2118] Implement OpenID Connector Auth for Admin node - change registry collection type in ProviderRegistry - add doc for ProviderRegistry.registerProvider --- .../engine/auth/provider/ProviderRegistry.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/nae-user-common/src/main/java/com/netgrif/application/engine/auth/provider/ProviderRegistry.java b/nae-user-common/src/main/java/com/netgrif/application/engine/auth/provider/ProviderRegistry.java index 7163fdaed32..75cab02d73c 100644 --- a/nae-user-common/src/main/java/com/netgrif/application/engine/auth/provider/ProviderRegistry.java +++ b/nae-user-common/src/main/java/com/netgrif/application/engine/auth/provider/ProviderRegistry.java @@ -4,19 +4,26 @@ import org.springframework.stereotype.Component; import java.util.*; +import java.util.concurrent.ConcurrentHashMap; @Slf4j @Component public class ProviderRegistry { - protected final Map> configClasses = new HashMap<>(); + protected final Map> configClasses = new ConcurrentHashMap<>(); - protected final Map> providers = new HashMap<>(); + protected final Map> providers = new ConcurrentHashMap<>(); + /** + * Registers provider into this bean + * + * @param type type of the provider. It's used as a key in the map registry + * @param provider provider instance to register. It's used as a value in the map registry + * */ public void registerProvider(String type, AuthMethodProvider provider) { providers.put(type.toLowerCase(), provider); configClasses.put(type.toLowerCase(), provider.getConfigClass()); - log.info("Registered provider for type: " + type); + log.info("Registered provider for type: {}", type); } public Class getConfigClass(String type) { From 74c264ac9e4ea091816efea36b9e925c901da11f Mon Sep 17 00:00:00 2001 From: chvostek Date: Wed, 4 Jun 2025 14:58:35 +0200 Subject: [PATCH 2/3] [NAE-2118] Implement OpenID Connector Auth for Admin node - fix logging in UserServiceImpl --- .../application/engine/auth/service/UserServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java index 21e1334c01c..c79dffeb183 100644 --- a/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java +++ b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java @@ -129,9 +129,9 @@ public Optional findUserByUsername(String username, String realmId) { String collectionName = collectionNameProvider.getCollectionNameForRealm(realmId); Optional userOpt = userRepository.findByUsername(username, mongoTemplate, collectionName).map(user -> (IUser) user); if (userOpt.isPresent()) { - log.debug("User [{}] found in realm [{}]", username, collectionName); + log.debug("User [{}] found in realm [{}]", username, realmId); } else { - log.warn("User [{}] not found in realm [{}]", username, collectionName); + log.warn("User [{}] not found in realm [{}]", username, realmId); } return userOpt; } From 4fcc5205a2796ba208dbff10afe488a1b0e3bacd Mon Sep 17 00:00:00 2001 From: chvostek Date: Tue, 10 Jun 2025 09:03:12 +0200 Subject: [PATCH 3/3] [NAE-2118] Implement OpenID Connector Auth for Admin node - optimize RealmServiceImpl.addProvider - remove unused AuthMethodProvider.createAuthMethod --- .../application/engine/auth/service/RealmServiceImpl.java | 7 ++----- .../engine/auth/provider/AuthMethodProvider.java | 3 --- .../application/engine/auth/service/RealmService.java | 2 +- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/RealmServiceImpl.java b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/RealmServiceImpl.java index 73ad92ac4c8..423f1a299f7 100644 --- a/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/RealmServiceImpl.java +++ b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/RealmServiceImpl.java @@ -98,18 +98,15 @@ public Optional getRealmByName(String name) { } @Override - public > T addProvider(String realmId, AuthMethodConfig config) { + public Realm addProvider(String realmId, AuthMethodConfig config) { AuthMethodProvider provider = (AuthMethodProvider) providerRegistry.getProvider(config.getType()); if (provider == null) { throw new IllegalArgumentException("Provider type " + config.getType() + " not found"); } - AuthMethod authMethod = provider.createAuthMethod(config); Realm realm = getRealmById(realmId).orElseThrow(() -> new IllegalArgumentException("Realm with id " + realmId + " not found")); realm.addAuthMethod(config); - realmRepository.save(realm); - - return (T) authMethod; + return realmRepository.save(realm); } @Override diff --git a/nae-user-common/src/main/java/com/netgrif/application/engine/auth/provider/AuthMethodProvider.java b/nae-user-common/src/main/java/com/netgrif/application/engine/auth/provider/AuthMethodProvider.java index d5a06866bec..9f73db553e3 100644 --- a/nae-user-common/src/main/java/com/netgrif/application/engine/auth/provider/AuthMethodProvider.java +++ b/nae-user-common/src/main/java/com/netgrif/application/engine/auth/provider/AuthMethodProvider.java @@ -1,14 +1,11 @@ package com.netgrif.application.engine.auth.provider; import com.netgrif.application.engine.objects.auth.provider.AuthMethod; -import com.netgrif.application.engine.objects.auth.provider.AuthMethodConfig; public interface AuthMethodProvider { String getProviderType(); - AuthMethod createAuthMethod(AuthMethodConfig authMethodConfig); - Class getConfigClass(); Class> getAuthMethodClass(); diff --git a/nae-user-common/src/main/java/com/netgrif/application/engine/auth/service/RealmService.java b/nae-user-common/src/main/java/com/netgrif/application/engine/auth/service/RealmService.java index 876976662d6..813e8fef3bb 100644 --- a/nae-user-common/src/main/java/com/netgrif/application/engine/auth/service/RealmService.java +++ b/nae-user-common/src/main/java/com/netgrif/application/engine/auth/service/RealmService.java @@ -32,7 +32,7 @@ public interface RealmService { Optional getRealmByName(String name); - > T addProvider(String realmId, AuthMethodConfig config); + Realm addProvider(String realmId, AuthMethodConfig config); void removeProvider(String realmId, String providerId);