[java-oidc-common] branch main updated: Harmonised the use of enums in profile configurations.

Henri Mikkonen henri.mikkonen at iki.fi
Thu Jun 30 13:37:40 UTC 2022


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=02570175707820030ed03b40dce2f3e152c98e30

The following commit(s) were added to refs/heads/main by this push:
     new 0257017  Harmonised the use of enums in profile configurations.
0257017 is described below

commit 02570175707820030ed03b40dce2f3e152c98e30
Author: Henri Mikkonen <henri.mikkonen at iki.fi>
AuthorDate: Thu Jun 30 16:36:26 2022 +0300

    Harmonised the use of enums in profile configurations.
    
    Now they're handled in the same way as in SAML2's BrowserSSOProfileConfiguration:
    getters and setter use enum, as the lookup function deals them as strings.
---
 .../config/OIDCAuthorizationConfiguration.java     | 29 ++++++++++----------
 .../config/OAuth2TokenRevocationConfiguration.java | 31 +++++++++++-----------
 ...enticationRequestMessageEncoderFactoryTest.java |  6 ++---
 3 files changed, 34 insertions(+), 32 deletions(-)

diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthorizationConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthorizationConfiguration.java
index 2cd8231..fb7ba9d 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthorizationConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthorizationConfiguration.java
@@ -92,7 +92,7 @@ public class OIDCAuthorizationConfiguration extends AbstractOIDCSSOConfiguration
      * Which HTTP method should be used to issue OIDC authentication requests. 
      * Supported values are POST and GET. The default is GET. 
      */
-    @Nonnull private Function<ProfileRequestContext,OIDCHttpRequestMethod> httpRequestMethodLookupStrategy;
+    @Nonnull private Function<ProfileRequestContext,String> httpRequestMethodLookupStrategy;
 
     /** Lookup function to supply strategy bi-function for manipulating authorization code claims set. */ 
     @Nonnull
@@ -122,7 +122,7 @@ public class OIDCAuthorizationConfiguration extends AbstractOIDCSSOConfiguration
         
         encodedAttributesLookupStrategy = FunctionSupport.constant(null);
         deniedUserInfoAttributesLookupStrategy = FunctionSupport.constant(null);
-        httpRequestMethodLookupStrategy = FunctionSupport.constant(OIDCHttpRequestMethod.GET);
+        httpRequestMethodLookupStrategy = FunctionSupport.constant(OIDCHttpRequestMethod.GET.toString());
 
         includeIssuerInResponsePredicate = Predicates.alwaysFalse();
         
@@ -264,7 +264,7 @@ public class OIDCAuthorizationConfiguration extends AbstractOIDCSSOConfiguration
      * @param strategy the strategy to set.
      */
     public void setHttpRequestMethodLookupStrategy(
-            @Nonnull final Function<ProfileRequestContext, OIDCHttpRequestMethod> strategy) {
+            @Nonnull final Function<ProfileRequestContext, String> strategy) {
         httpRequestMethodLookupStrategy = 
                 Constraint.isNotNull(strategy, "HTTP request method strategy can not be null");
     }
@@ -274,16 +274,8 @@ public class OIDCAuthorizationConfiguration extends AbstractOIDCSSOConfiguration
      * 
      * @param method the HTTP method to set, either POST or GET.
      */
-    public void setHttpRequestMethod(@Nonnull @NotEmpty final String method){
-        Constraint.isNotEmpty(method, "HTTP request method strategy can not be null or empty");
-        if ("POST".equals(method)) {
-            httpRequestMethodLookupStrategy = FunctionSupport.constant(OIDCHttpRequestMethod.POST);
-        } else if ("GET".equals(method)) {
-            httpRequestMethodLookupStrategy = FunctionSupport.constant(OIDCHttpRequestMethod.GET);
-        } else {
-            throw new ConstraintViolationException("OIDC HTTP request method not "
-                    + "recognized, must be one of POST or GET");
-        }
+    public void setHttpRequestMethod(@Nonnull @NotEmpty final OIDCHttpRequestMethod method){
+        httpRequestMethodLookupStrategy = FunctionSupport.constant(method != null ? method.toString() : null);
     }
     
     /**
@@ -294,7 +286,16 @@ public class OIDCAuthorizationConfiguration extends AbstractOIDCSSOConfiguration
      * @return the HTTP request method
      */
     public OIDCHttpRequestMethod getHttpRequestMethod(@Nullable final ProfileRequestContext profileRequestContext) {
-        return httpRequestMethodLookupStrategy.apply(profileRequestContext);
+        final String method = httpRequestMethodLookupStrategy.apply(profileRequestContext);
+        if (method != null) {
+            try {
+                return OIDCHttpRequestMethod.valueOf(method);
+            } catch (final IllegalArgumentException e) {
+                throw new ConstraintViolationException("Unexpected HTTP method value: '" + method + "': "
+                        + e.getMessage());
+            }
+        }
+        return null;
     }
 
     /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenRevocationConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenRevocationConfiguration.java
index 0f5bc93..a6c51b0 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenRevocationConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenRevocationConfiguration.java
@@ -42,7 +42,7 @@ public class OAuth2TokenRevocationConfiguration extends AbstractOAuth2TokenValid
     /** ID for this profile configuration. */
     @Nonnull @NotEmpty public static final String PROFILE_ID = "http://shibboleth.net/ns/profiles/oauth2/revocation";
 
-    /** Enumeration of the HTTP methods used in OIDC authentication requests.*/
+    /** Enumeration of the OAuth2 token revocation methods. */
     public enum OAuth2TokenRevocationMethod {    
         /**
          * Revoke full chain of tokens (from authorization code (or initial access token) onwards).
@@ -58,7 +58,7 @@ public class OAuth2TokenRevocationConfiguration extends AbstractOAuth2TokenValid
      * Which revocation method should be used when revoking a token. 
      * Supported values are CHAIN and TOKEN. The default is CHAIN. 
      */
-    @Nonnull private Function<ProfileRequestContext,OAuth2TokenRevocationMethod> revocationMethodLookupStrategy;
+    @Nonnull private Function<ProfileRequestContext,String> revocationMethodLookupStrategy;
 
     /** Lookup function to supply revocation lifetime. */
     @Nonnull private Function<ProfileRequestContext,Duration> revocationLifetimeLookupStrategy;
@@ -68,7 +68,7 @@ public class OAuth2TokenRevocationConfiguration extends AbstractOAuth2TokenValid
      */
     public OAuth2TokenRevocationConfiguration() {
         this(PROFILE_ID);
-        revocationMethodLookupStrategy = FunctionSupport.constant(OAuth2TokenRevocationMethod.CHAIN);
+        revocationMethodLookupStrategy = FunctionSupport.constant(OAuth2TokenRevocationMethod.CHAIN.toString());
         revocationLifetimeLookupStrategy = FunctionSupport.constant(Duration.ofHours(6));
     }
 
@@ -89,7 +89,7 @@ public class OAuth2TokenRevocationConfiguration extends AbstractOAuth2TokenValid
      * @since 2.1.0
      */
     public void setRevocationMethodLookupStrategy(
-            @Nonnull final Function<ProfileRequestContext,OAuth2TokenRevocationMethod> strategy) {
+            @Nonnull final Function<ProfileRequestContext,String> strategy) {
         revocationMethodLookupStrategy = Constraint.isNotNull(strategy, "Lookup strategy cannot be null");        
     }
 
@@ -100,16 +100,8 @@ public class OAuth2TokenRevocationConfiguration extends AbstractOAuth2TokenValid
      * 
      * @since 2.1.0
      */
-    public void setRevocationMethod(@Nonnull @NotEmpty final String method) {
-        Constraint.isNotEmpty(method, "OAuth2 token revocation method strategy can not be null or empty");
-        if ("CHAIN".equals(method)) {
-            revocationMethodLookupStrategy = FunctionSupport.constant(OAuth2TokenRevocationMethod.CHAIN);
-        } else if ("TOKEN".equals(method)) {
-            revocationMethodLookupStrategy = FunctionSupport.constant(OAuth2TokenRevocationMethod.TOKEN);
-        } else {
-            throw new ConstraintViolationException("OAuth2 token revocation method '"
-                    + "' not recognized, must be one of CHAIN or TOKEN");
-        }
+    public void setRevocationMethod(@Nonnull @NotEmpty final OAuth2TokenRevocationMethod method) {
+        revocationMethodLookupStrategy = FunctionSupport.constant(method != null ? method.toString() : null);
     }
 
     /**
@@ -122,7 +114,16 @@ public class OAuth2TokenRevocationConfiguration extends AbstractOAuth2TokenValid
      */
     public OAuth2TokenRevocationMethod getRevocationMethod(
             @Nullable final ProfileRequestContext profileRequestContext) {
-        return revocationMethodLookupStrategy.apply(profileRequestContext);
+        final String method = revocationMethodLookupStrategy.apply(profileRequestContext);
+        if (method != null) {
+            try {
+                return OAuth2TokenRevocationMethod.valueOf(method);
+            } catch (final IllegalArgumentException e) {
+                throw new ConstraintViolationException("Unexpected revocation method value: '" + method + "': "
+                        + e.getMessage());
+            }
+        }
+        return null;
     }
 
     /**
diff --git a/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/impl/AuthenticationRequestMessageEncoderFactoryTest.java b/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/impl/AuthenticationRequestMessageEncoderFactoryTest.java
index 76485ac..24dbb79 100644
--- a/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/impl/AuthenticationRequestMessageEncoderFactoryTest.java
+++ b/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/impl/AuthenticationRequestMessageEncoderFactoryTest.java
@@ -55,7 +55,7 @@ public class AuthenticationRequestMessageEncoderFactoryTest {
         final ProfileRequestContext prc = new ProfileRequestContext();
         // mock a profile config to request form POST serialization
         final OIDCAuthorizationConfiguration config = new OIDCAuthorizationConfiguration();
-        config.setHttpRequestMethodLookupStrategy(rc -> OIDCHttpRequestMethod.POST);
+        config.setHttpRequestMethodLookupStrategy(rc -> OIDCHttpRequestMethod.POST.toString());
         final RelyingPartyContext rpCtx = prc.getSubcontext(RelyingPartyContext.class, true);
         rpCtx.setProfileConfig(config);
         
@@ -86,7 +86,7 @@ public class AuthenticationRequestMessageEncoderFactoryTest {
         final ProfileRequestContext prc = new ProfileRequestContext();
         // mock a profile config to request form POST serialization
         final OIDCAuthorizationConfiguration config = new OIDCAuthorizationConfiguration();
-        config.setHttpRequestMethodLookupStrategy(rc -> OIDCHttpRequestMethod.GET);
+        config.setHttpRequestMethodLookupStrategy(rc -> OIDCHttpRequestMethod.GET.toString());
         final RelyingPartyContext rpCtx = prc.getSubcontext(RelyingPartyContext.class, true);
         rpCtx.setProfileConfig(config);
         
@@ -118,7 +118,7 @@ public class AuthenticationRequestMessageEncoderFactoryTest {
         final ProfileRequestContext prc = new ProfileRequestContext();
         // mock a profile config to request form POST serialization
         final OIDCAuthorizationConfiguration config = new OIDCAuthorizationConfiguration();
-        config.setHttpRequestMethodLookupStrategy(rc -> OIDCHttpRequestMethod.POST);
+        config.setHttpRequestMethodLookupStrategy(rc -> OIDCHttpRequestMethod.POST.toString());
         final RelyingPartyContext rpCtx = prc.getSubcontext(RelyingPartyContext.class, true);
         rpCtx.setProfileConfig(config);
         

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


More information about the commits mailing list