[java-oidc-common] branch main updated: JCOMOIDC-105 - Profile configuration setting to require OIDC authentication request

Henri Mikkonen henri.mikkonen at iki.fi
Tue Mar 26 11:13:25 UTC 2024


This is an automated email from the git hooks/post-receive script.

hjmikkon pushed a commit to branch main
in repository java-oidc-common.

View the commit online:
http://git.shibboleth.net/view/?p=java-oidc-common.git;a=commit;h=0049c772ade69b18aa85b84be0a69d480b83d216

The following commit(s) were added to refs/heads/main by this push:
     new 0049c77  JCOMOIDC-105 - Profile configuration setting to require OIDC authentication request
0049c77 is described below

commit 0049c772ade69b18aa85b84be0a69d480b83d216
Author: Henri Mikkonen <henri.mikkonen at iki.fi>
AuthorDate: Tue Mar 26 13:12:30 2024 +0200

    JCOMOIDC-105 - Profile configuration setting to require OIDC authentication request
    
    https://shibboleth.atlassian.net/browse/JCOMOIDC-105
    
    Refactored the requireAuthenticationRequestPredicate to use lookup strategy to enable
    MDDriven-wiring of the predicate.
---
 .../DefaultOIDCAuthorizationConfiguration.java     | 29 ++++++++++++++++++----
 1 file changed, 24 insertions(+), 5 deletions(-)

diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCAuthorizationConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCAuthorizationConfiguration.java
index 7b5c85f..1d887d4 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCAuthorizationConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCAuthorizationConfiguration.java
@@ -143,7 +143,8 @@ public class DefaultOIDCAuthorizationConfiguration extends AbstractOIDCSSOConfig
     @Nonnull private Function<ProfileRequestContext,Set<String>> responseModesLookupStrategy;
 
     /** Whether client is required to use OIDC authentication request vs plain OAuth2 authorization request. */
-    @Nonnull private Predicate<ProfileRequestContext> requireAuthenticationRequestPredicate;
+    @Nonnull private Function<ProfileRequestContext, Predicate<ProfileRequestContext>>
+        requireAuthenticationRequestPredicateLookupStrategy;
 
     /**
      * Constructor.
@@ -185,7 +186,8 @@ public class DefaultOIDCAuthorizationConfiguration extends AbstractOIDCSSOConfig
         tlsServerValidationOnlyPredicate = PredicateSupport.alwaysFalse();
         displayLookupStrategy = FunctionSupport.constant(null);
         responseModesLookupStrategy = FunctionSupport.constant(CollectionSupport.emptySet());
-        requireAuthenticationRequestPredicate = PredicateSupport.alwaysTrue();
+        requireAuthenticationRequestPredicateLookupStrategy =
+                FunctionSupport.constant(PredicateSupport.alwaysTrue());
     }
 
     /** {@inheritDoc} */
@@ -945,7 +947,8 @@ public class DefaultOIDCAuthorizationConfiguration extends AbstractOIDCSSOConfig
     /** {@inheritDoc} */
     @Override
     public boolean isRequireAuthenticationRequest(@Nullable final ProfileRequestContext profileRequestContext) {
-        return requireAuthenticationRequestPredicate.test(profileRequestContext);
+        return requireAuthenticationRequestPredicateLookupStrategy.apply(profileRequestContext)
+                .test(profileRequestContext);
     }
 
     /**
@@ -956,7 +959,8 @@ public class DefaultOIDCAuthorizationConfiguration extends AbstractOIDCSSOConfig
      * @since 3.1.0
      */
     public void setRequireAuthenticationRequest(final boolean flag) {
-        requireAuthenticationRequestPredicate = flag ? PredicateSupport.alwaysTrue() : PredicateSupport.alwaysFalse();
+        requireAuthenticationRequestPredicateLookupStrategy = FunctionSupport.constant(flag ?
+                PredicateSupport.alwaysTrue() : PredicateSupport.alwaysFalse());
     }
 
     /**
@@ -968,7 +972,22 @@ public class DefaultOIDCAuthorizationConfiguration extends AbstractOIDCSSOConfig
      * @since 3.1.0
      */
     public void setRequireAuthenticationRequestPredicate(@Nonnull final Predicate<ProfileRequestContext> condition) {
-        requireAuthenticationRequestPredicate = Constraint.isNotNull(condition, "Condition cannot be null");
+        requireAuthenticationRequestPredicateLookupStrategy = FunctionSupport.constant(
+                Constraint.isNotNull(condition, "Condition cannot be null"));
+    }
+
+    /**
+     * Set the lookup strategy to determine whether client is required to use OIDC authentication request vs plain
+     * OAuth2 authorization request.
+     *
+     * @param strategy the strategy to use
+     * 
+     * @since 3.1.0
+     */
+    public void setRequireAuthenticationRequestPredicateLookupStrategy(
+            @Nonnull final Function<ProfileRequestContext,  Predicate<ProfileRequestContext>> strategy) {
+        requireAuthenticationRequestPredicateLookupStrategy =
+                Constraint.isNotNull(strategy, "Lookup strategy cannot be null");
     }
 
 }

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list