From 17e0d78c1b0df72539b9b2203cc455db8eba1634 Mon Sep 17 00:00:00 2001 From: YuriyZ Date: Wed, 17 Apr 2024 12:32:55 +0300 Subject: [PATCH] feat(jans-auth-server): invoke agama script for acr_values=agama_ #8216 https://github.com/JanssenProject/jans/issues/8216 Signed-off-by: YuriyZ --- .../as/server/authorize/ws/rs/AuthorizeAction.java | 3 ++- .../external/ExternalAuthenticationService.java | 11 ++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/jans-auth-server/server/src/main/java/io/jans/as/server/authorize/ws/rs/AuthorizeAction.java b/jans-auth-server/server/src/main/java/io/jans/as/server/authorize/ws/rs/AuthorizeAction.java index 19e7e8034c5..3af8f28cd5d 100644 --- a/jans-auth-server/server/src/main/java/io/jans/as/server/authorize/ws/rs/AuthorizeAction.java +++ b/jans-auth-server/server/src/main/java/io/jans/as/server/authorize/ws/rs/AuthorizeAction.java @@ -327,7 +327,8 @@ public void checkPermissionGrantedInternal() throws IOException { acrValuesList = Arrays.asList(defaultAuthenticationMode.getName()); } - CustomScriptConfiguration customScriptConfiguration = externalAuthenticationService.determineCustomScriptConfiguration(AuthenticationScriptUsageType.INTERACTIVE, acrValuesList); + List acrsToDetermineScript = AcrService.getAcrsToDetermineScript(acrValuesList); + CustomScriptConfiguration customScriptConfiguration = externalAuthenticationService.determineCustomScriptConfiguration(AuthenticationScriptUsageType.INTERACTIVE, acrsToDetermineScript); if (customScriptConfiguration == null) { log.error("Failed to get CustomScriptConfiguration. auth_step: {}, acr_values: {}", 1, this.acrValues); diff --git a/jans-auth-server/server/src/main/java/io/jans/as/server/service/external/ExternalAuthenticationService.java b/jans-auth-server/server/src/main/java/io/jans/as/server/service/external/ExternalAuthenticationService.java index 23e4acc5863..d1e8376cb68 100644 --- a/jans-auth-server/server/src/main/java/io/jans/as/server/service/external/ExternalAuthenticationService.java +++ b/jans-auth-server/server/src/main/java/io/jans/as/server/service/external/ExternalAuthenticationService.java @@ -10,6 +10,7 @@ import com.google.common.collect.Sets; import io.jans.as.common.service.common.ApplicationFactory; import io.jans.as.model.configuration.AppConfiguration; +import io.jans.as.server.service.AcrService; import io.jans.as.server.service.LocalResponseCache; import io.jans.as.server.service.cdi.event.ReloadAuthScript; import io.jans.as.server.service.external.internal.InternalDefaultPersonAuthenticationType; @@ -34,6 +35,8 @@ import java.util.*; import java.util.Map.Entry; +import static org.apache.commons.lang3.BooleanUtils.isTrue; + /** * Provides factory methods needed to create external authenticator * @@ -368,6 +371,10 @@ public CustomScriptConfiguration getExternalAuthenticatorByAuthLevel(Authenticat } public CustomScriptConfiguration determineCustomScriptConfiguration(AuthenticationScriptUsageType usageType, int authStep, String acr) { + if (AcrService.isAgama(acr)) { + acr = "agama"; + } + CustomScriptConfiguration customScriptConfiguration; if (authStep == 1) { if (StringHelper.isNotEmpty(acr)) { @@ -383,6 +390,8 @@ public CustomScriptConfiguration determineCustomScriptConfiguration(Authenticati } public CustomScriptConfiguration determineCustomScriptConfiguration(AuthenticationScriptUsageType usageType, List acrValues) { + log.debug("Determining script by acrs {}, usageType {}", acrValues, usageType); + List authModes = getAuthModesByAcrValues(acrValues); if (authModes.size() > 0) { @@ -395,7 +404,7 @@ public CustomScriptConfiguration determineCustomScriptConfiguration(Authenticati } } - if (appConfiguration.getUseHighestLevelScriptIfAcrScriptNotFound()) { + if (isTrue(appConfiguration.getUseHighestLevelScriptIfAcrScriptNotFound())) { return getDefaultExternalAuthenticator(usageType); } return null;