[java-idp-plugin-oidc-rp] branch main updated: Add missing params to request object

Phil Smart philip.smart at jisc.ac.uk
Mon Dec 19 16:03:06 UTC 2022


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

philsmart pushed a commit to branch main
in repository java-idp-plugin-oidc-rp.

View the commit online:
http://git.shibboleth.net/view/?p=java-idp-plugin-oidc-rp.git;a=commit;h=6f21b3f072706e67b5e83db48a0e2abe1b323f61

The following commit(s) were added to refs/heads/main by this push:
     new 6f21b3f  Add missing params to request object
6f21b3f is described below

commit 6f21b3f072706e67b5e83db48a0e2abe1b323f61
Author: Phil Smart <philip.smart at jisc.ac.uk>
AuthorDate: Mon Dec 19 16:03:04 2022 +0000

    Add missing params to request object
---
 .../idp/plugin/authn/oidc/rp/impl/BuildRequestObject.java     | 11 ++++++++++-
 .../idp/plugin/authn/oidc/rp/impl/BuildRequestObjectTest.java |  4 ++++
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/BuildRequestObject.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/BuildRequestObject.java
index 474becf..23304ec 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/BuildRequestObject.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/BuildRequestObject.java
@@ -17,6 +17,7 @@
 
 package net.shibboleth.idp.plugin.authn.oidc.rp.impl;
 
+import java.time.Duration;
 import java.util.function.Function;
 import java.util.function.Predicate;
 
@@ -199,6 +200,7 @@ public class BuildRequestObject extends AbstractAuthenticationAction {
         return true;
     }
 
+    //TODO maybe we could share building of a request object or query params in some way
     /** {@inheritDoc} */
     @Override
     protected void doExecute(@Nonnull final ProfileRequestContext profileRequestContext,
@@ -226,13 +228,17 @@ public class BuildRequestObject extends AbstractAuthenticationAction {
 
         setClaimIfPresent(requestObjectClaims, "nonce", authnRequest.getNonce());        
         setClaimIfPresent(requestObjectClaims, "response_type", authnRequest.getResponseType());
+        
         // Only set the response_mode if not equal to the default for that response_type
         if (authnRequest.getDefaultResponseMode() != null && 
                 !authnRequest.getDefaultResponseMode().equals(authnRequest.getResponseMode())){
             requestObjectClaims.setClaim("response_mode", authnRequest.getResponseMode());
         }
+        
         setClaimIfPresent(requestObjectClaims, "redirect_uri", authnRequest.getRedirectURI());
         setClaimIfPresent(requestObjectClaims,"scope", authnRequest.getScope());
+        setClaimIfPresent(requestObjectClaims, "max_age", authnRequest.getMaxAge()); 
+        setClaimIfPresent(requestObjectClaims, "prompt", authnRequest.getPrompt()); 
         
         if (authnRequest.getRequestedClaims() != null) {
             requestObjectClaims.setClaim("claims", authnRequest.getRequestedClaims());
@@ -265,7 +271,10 @@ public class BuildRequestObject extends AbstractAuthenticationAction {
      */
     private void setClaimIfPresent(
             @Nonnull final ClaimsSet claims, @Nonnull final String claimName, @Nullable final Object claim) {
-        if (claim != null) {
+        if (claim instanceof Duration) {
+            // Convert to seconds
+            claims.setClaim(claimName, ((Duration)claim).toSeconds());
+        } else if (claim != null) {
             claims.setClaim(claimName, claim.toString());
         }
     }
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/BuildRequestObjectTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/BuildRequestObjectTest.java
index 958bd7f..82dd5bb 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/BuildRequestObjectTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/BuildRequestObjectTest.java
@@ -6,6 +6,8 @@ import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
 
+import java.time.Duration;
+
 import org.opensaml.messaging.context.navigate.ChildContextLookup;
 import org.opensaml.messaging.context.navigate.ParentContextLookup;
 import org.opensaml.profile.context.ProfileRequestContext;
@@ -64,6 +66,7 @@ public class BuildRequestObjectTest extends AbstractOIDCTest {
         authnRequest.setResponseType(ResponseType.CODE);
         authnRequest.setResponseMode(ResponseMode.QUERY);
         authnRequest.setDefaultResponseMode(ResponseMode.QUERY);
+        authnRequest.setMaxAge(Duration.ofSeconds(60));
     }
     
     @Test
@@ -81,6 +84,7 @@ public class BuildRequestObjectTest extends AbstractOIDCTest {
         assertEquals(claims.getStringClaim("iss"),"https://rp.example.com");
         assertEquals(claims.getStringClaim("client_id"),"https://rp.example.com");
         assertEquals(claims.getStringClaim("response_type"),"code");
+        assertEquals(claims.getNumberClaim("max_age").longValue(),60);
         assertEquals(claims.getStringClaim("redirect_uri"),"https://rp.example.com/callback");
         assertNotNull(claims.getStringClaim("nonce"));
         assertNotNull(claims.getClaim("aud"));

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


More information about the commits mailing list