From df60257603e1225e102f1e1f1599183ae92f12cf Mon Sep 17 00:00:00 2001 From: Washington Silva Date: Thu, 14 Sep 2023 20:41:35 -0300 Subject: [PATCH] feat: adding support for Keycloak 22 --- pom.xml | 8 +++---- .../RegistrationProfileDomainValidation.java | 12 +++++++---- .../RegistrationProfileWithDomainBlock.java | 21 ++++++++++++------- ...egistrationProfileWithMailDomainCheck.java | 10 +++++++-- 4 files changed, 34 insertions(+), 17 deletions(-) diff --git a/pom.xml b/pom.xml index 50fa622..f4249a5 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 net.micedre.keycloak keycloak-mail-whitelisting - 1.7-SNAPSHOT + 1.8-SNAPSHOT Keycloak mail whitelisting extension A keycloak extension to block non authorized domain to register @@ -30,9 +30,9 @@ UTF-8 - 1.8 - 1.8 - 19.0.0 + 17 + 17 + 22.0.0 diff --git a/src/main/java/net/micedre/keycloak/registration/RegistrationProfileDomainValidation.java b/src/main/java/net/micedre/keycloak/registration/RegistrationProfileDomainValidation.java index a853649..c3a1356 100644 --- a/src/main/java/net/micedre/keycloak/registration/RegistrationProfileDomainValidation.java +++ b/src/main/java/net/micedre/keycloak/registration/RegistrationProfileDomainValidation.java @@ -1,5 +1,6 @@ package net.micedre.keycloak.registration; +import org.jboss.logging.Logger; import org.keycloak.authentication.FormAction; import org.keycloak.authentication.ValidationContext; import org.keycloak.authentication.forms.RegistrationPage; @@ -11,18 +12,18 @@ import org.keycloak.models.utils.FormMessage; import org.keycloak.services.messages.Messages; import org.keycloak.services.validation.Validation; -import javax.ws.rs.core.MultivaluedMap; +import jakarta.ws.rs.core.MultivaluedMap; import java.util.ArrayList; import java.util.List; public abstract class RegistrationProfileDomainValidation extends RegistrationProfile implements FormAction { + protected static final Logger logger = Logger.getLogger(RegistrationProfileDomainValidation.class); - protected static String domainListConfigName; protected static final String DEFAULT_DOMAIN_LIST = "example.org"; protected static final String DOMAIN_LIST_SEPARATOR = "##"; @Override - public boolean isConfigurable() { + public boolean isConfigurable() { return true; } @@ -76,7 +77,8 @@ public abstract class RegistrationProfileDomainValidation extends RegistrationPr return; } - String[] domainList = mailDomainConfig.getConfig().getOrDefault(domainListConfigName, DEFAULT_DOMAIN_LIST).split(DOMAIN_LIST_SEPARATOR); + String[] domainList = getDomainList(mailDomainConfig); + boolean emailDomainValid = isEmailValid(email, domainList); if (!emailDomainValid) { @@ -91,6 +93,8 @@ public abstract class RegistrationProfileDomainValidation extends RegistrationPr } } + public abstract String[] getDomainList(AuthenticatorConfigModel mailDomainConfig); + public abstract boolean isEmailValid(String email, String[] domains); } diff --git a/src/main/java/net/micedre/keycloak/registration/RegistrationProfileWithDomainBlock.java b/src/main/java/net/micedre/keycloak/registration/RegistrationProfileWithDomainBlock.java index 7d9986f..4298b0f 100644 --- a/src/main/java/net/micedre/keycloak/registration/RegistrationProfileWithDomainBlock.java +++ b/src/main/java/net/micedre/keycloak/registration/RegistrationProfileWithDomainBlock.java @@ -1,21 +1,23 @@ package net.micedre.keycloak.registration; +import org.keycloak.authentication.FormContext; +import org.keycloak.forms.login.LoginFormsProvider; +import org.keycloak.provider.ProviderConfigProperty; +import org.keycloak.models.AuthenticatorConfigModel; + import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import org.keycloak.authentication.FormContext; -import org.keycloak.forms.login.LoginFormsProvider; -import org.keycloak.provider.ProviderConfigProperty; - public class RegistrationProfileWithDomainBlock extends RegistrationProfileDomainValidation { public static final String PROVIDER_ID = "registration-domain-block-action"; + private static final List CONFIG_PROPERTIES = new ArrayList<>(); - static { - domainListConfigName = "invalidDomains"; + public static String domainListConfigName = "invalidDomains"; + static { ProviderConfigProperty property; property = new ProviderConfigProperty(); property.setName(domainListConfigName); @@ -26,7 +28,7 @@ public class RegistrationProfileWithDomainBlock extends RegistrationProfileDomai } @Override - public String getDisplayType() { + public String getDisplayType() { return "Profile Validation with domain block"; } @@ -52,6 +54,11 @@ public class RegistrationProfileWithDomainBlock extends RegistrationProfileDomai form.setAttribute("unauthorizedMailDomains", unauthorizedMailDomains); } + @Override + public String[] getDomainList(AuthenticatorConfigModel mailDomainConfig) { + return mailDomainConfig.getConfig().getOrDefault(domainListConfigName, DEFAULT_DOMAIN_LIST).split(DOMAIN_LIST_SEPARATOR); + } + @Override public boolean isEmailValid(String email, String[] domains) { for (String domain : domains) { diff --git a/src/main/java/net/micedre/keycloak/registration/RegistrationProfileWithMailDomainCheck.java b/src/main/java/net/micedre/keycloak/registration/RegistrationProfileWithMailDomainCheck.java index 6bf3596..3437e7e 100644 --- a/src/main/java/net/micedre/keycloak/registration/RegistrationProfileWithMailDomainCheck.java +++ b/src/main/java/net/micedre/keycloak/registration/RegistrationProfileWithMailDomainCheck.java @@ -3,6 +3,7 @@ package net.micedre.keycloak.registration; import org.keycloak.authentication.FormContext; import org.keycloak.forms.login.LoginFormsProvider; import org.keycloak.provider.ProviderConfigProperty; +import org.keycloak.models.AuthenticatorConfigModel; import java.util.ArrayList; import java.util.Arrays; @@ -14,9 +15,9 @@ public class RegistrationProfileWithMailDomainCheck extends RegistrationProfileD private static final List CONFIG_PROPERTIES = new ArrayList<>(); - static { - domainListConfigName = "validDomains"; + public static String domainListConfigName = "validDomains"; + static { ProviderConfigProperty property; property = new ProviderConfigProperty(); property.setName(domainListConfigName); @@ -53,6 +54,11 @@ public class RegistrationProfileWithMailDomainCheck extends RegistrationProfileD form.setAttribute("authorizedMailDomains", authorizedMailDomains); } + @Override + public String[] getDomainList(AuthenticatorConfigModel mailDomainConfig) { + return mailDomainConfig.getConfig().getOrDefault(domainListConfigName, DEFAULT_DOMAIN_LIST).split(DOMAIN_LIST_SEPARATOR); + } + @Override public boolean isEmailValid(String email, String[] domains) { for (String domain : domains) {