From 5ab75c9b7a8404071c39bab63259a9d4d95b88b1 Mon Sep 17 00:00:00 2001 From: pkazimierowski <pkazimierowski@man.poznan.pl> Date: Wed, 9 Apr 2025 09:01:21 +0200 Subject: [PATCH 1/2] extended conditions for saml token --- .../service/impl/OidcUserServiceImpl.java | 26 +++++++------------ 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/OidcUserServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/OidcUserServiceImpl.java index a9eebe460..6b6b264f5 100644 --- a/src/main/java/net/geant/nmaas/portal/service/impl/OidcUserServiceImpl.java +++ b/src/main/java/net/geant/nmaas/portal/service/impl/OidcUserServiceImpl.java @@ -51,14 +51,15 @@ public class OidcUserServiceImpl implements OidcUserService { .existsBySamlToken(oidcUserSub); boolean existUserByUsernameAsSamlToken = userService .existsBySamlToken(oidcUserPreferredUsername); - boolean existUserByEmail = userService - .existsByEmail(oidcUserEmail); + boolean existsUserBySamlTokenAsEmail = userService + .existsBySamlToken(oidcUserEmail); if (existUserBySamlToken) { return userService .findBySamlToken(oidcUserSub) .orElseThrow(); - } else if (existUserByUsernameAsSamlToken) { + } else if (existUserByUsernameAsSamlToken + || existsUserBySamlTokenAsEmail) { User user = userService .findBySamlToken(oidcUserPreferredUsername) .orElseThrow(); @@ -71,7 +72,7 @@ public class OidcUserServiceImpl implements OidcUserService { + oidcUserPreferredUsername + " does not match internal user "); } - } else { + } else { return registerNewUser(oidcUser); } } @@ -116,20 +117,13 @@ public class OidcUserServiceImpl implements OidcUserService { @Override public boolean externalUserRequiredLinking(OidcUser oidcUser) { - String oidcUserSub = oidcUser.getAttribute("sub"); String oidcUserEmail = oidcUser.getAttribute("email"); - String oidcUserPreferredUsername = oidcUser.getAttribute("preferred_username"); - - boolean existUserBySamlToken = userService - .existsBySamlToken(oidcUserSub); - boolean existUserByUsernameAsSamlToken = userService - .existsBySamlToken(oidcUserPreferredUsername); - boolean existUserByEmail = userService - .existsByEmail(oidcUserEmail); - if(existUserBySamlToken || existUserByUsernameAsSamlToken) { - return false; - }else return existUserByEmail; + if(userService.existsByEmail(oidcUserEmail)){ + User user = userService.findByEmail(oidcUserEmail); + return user.getSamlToken().isEmpty(); + } + return false; } @Override -- GitLab From e8bb7c9aab720cdb5aa93c7fa32914349473d4cf Mon Sep 17 00:00:00 2001 From: pkazimierowski <pkazimierowski@man.poznan.pl> Date: Wed, 9 Apr 2025 09:13:31 +0200 Subject: [PATCH 2/2] fixed condition --- .../geant/nmaas/portal/service/impl/OidcUserServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/OidcUserServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/OidcUserServiceImpl.java index 6b6b264f5..3303cbfa6 100644 --- a/src/main/java/net/geant/nmaas/portal/service/impl/OidcUserServiceImpl.java +++ b/src/main/java/net/geant/nmaas/portal/service/impl/OidcUserServiceImpl.java @@ -121,7 +121,7 @@ public class OidcUserServiceImpl implements OidcUserService { if(userService.existsByEmail(oidcUserEmail)){ User user = userService.findByEmail(oidcUserEmail); - return user.getSamlToken().isEmpty(); + return user.getSamlToken() == null || user.getSamlToken().isEmpty(); } return false; } -- GitLab