[java-idp-plugin-duo] branch main updated: Support changes to include claim sets in validation lookup strategies

Phil Smart philip.smart at jisc.ac.uk
Fri Jan 29 14:59:58 UTC 2021


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

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

View the commit online:
http://git.shibboleth.net/view/?p=java-idp-plugin-duo.git;a=commit;h=cd206e7d311f86bb664a30a0eb26d8e684dd641c

The following commit(s) were added to refs/heads/main by this push:
       new  cd206e7   Support changes to include claim sets in validation lookup strategies
cd206e7 is described below

commit cd206e7d311f86bb664a30a0eb26d8e684dd641c
Author: Phil Smart <philip.smart at jisc.ac.uk>
AuthorDate: Fri Jan 29 14:59:56 2021 +0000

    Support changes to include claim sets in validation lookup strategies
---
 .../plugin/authn/duo/impl/DuoAudienceClaimLookupStrategy.java    | 9 ++++++---
 .../idp/plugin/authn/duo/impl/DuoIssuerClaimLookupStrategy.java  | 8 ++++++--
 .../idp/plugin/authn/duo/impl/DuoNonceClaimLookupStrategy.java   | 9 ++++++---
 .../plugin/authn/duo/impl/DuoUsernameClaimLookupStrategy.java    | 9 ++++++---
 .../authn/duo/impl/DuoAudienceClaimLookupStrategyTest.java       | 8 +++++---
 .../plugin/authn/duo/impl/DuoIssuerClaimLookupStrategyTest.java  | 8 +++++---
 .../plugin/authn/duo/impl/DuoNonceClaimLookupStrategyTest.java   | 8 +++++---
 .../authn/duo/impl/DuoUsernameClaimLookupStrategyTest.java       | 8 +++++---
 8 files changed, 44 insertions(+), 23 deletions(-)

diff --git a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoAudienceClaimLookupStrategy.java b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoAudienceClaimLookupStrategy.java
index bc50b09..3e5f413 100644
--- a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoAudienceClaimLookupStrategy.java
+++ b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoAudienceClaimLookupStrategy.java
@@ -17,12 +17,14 @@
 
 package net.shibboleth.idp.plugin.authn.duo.impl;
 
-import java.util.function.Function;
+import java.util.function.BiFunction;
 
 import javax.annotation.Nonnull;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
+import com.nimbusds.jwt.JWTClaimsSet;
+
 import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.plugin.authn.duo.DuoOIDCIntegration;
 import net.shibboleth.idp.plugin.authn.duo.context.DuoOIDCAuthenticationContext;
@@ -31,10 +33,11 @@ import net.shibboleth.idp.plugin.authn.duo.context.DuoOIDCAuthenticationContext;
  * Looks up the audience from the clientID in the {@link DuoOIDCIntegration} inside the context.
  * Returns null if it fails to find the clientID. Used for JWT ID Token audience claims verification.
  */
-public class DuoAudienceClaimLookupStrategy implements Function<ProfileRequestContext,String>{
+public class DuoAudienceClaimLookupStrategy implements BiFunction<ProfileRequestContext, JWTClaimsSet, String> {
 
     @Override
-    public String apply(@Nonnull final ProfileRequestContext context) {
+    public String apply(@Nonnull final ProfileRequestContext context,
+            @Nonnull final JWTClaimsSet cliams) {
         
         final AuthenticationContext authnContext = context.getSubcontext(AuthenticationContext.class);
         if (authnContext == null) {
diff --git a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoIssuerClaimLookupStrategy.java b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoIssuerClaimLookupStrategy.java
index 6261922..ae22af8 100644
--- a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoIssuerClaimLookupStrategy.java
+++ b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoIssuerClaimLookupStrategy.java
@@ -17,12 +17,15 @@
 
 package net.shibboleth.idp.plugin.authn.duo.impl;
 
+import java.util.function.BiFunction;
 import java.util.function.Function;
 
 import javax.annotation.Nonnull;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
+import com.nimbusds.jwt.JWTClaimsSet;
+
 import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.authn.duo.context.DuoAuthenticationContext;
 import net.shibboleth.idp.plugin.authn.duo.DuoOIDCIntegration;
@@ -33,7 +36,7 @@ import net.shibboleth.utilities.java.support.logic.Constraint;
 /** 
  * Find the issuer from the {@link DuoOIDCIntegration}. Returns null if not found.
  */
-public class DuoIssuerClaimLookupStrategy implements Function<ProfileRequestContext, String> {
+public class DuoIssuerClaimLookupStrategy implements BiFunction<ProfileRequestContext, JWTClaimsSet, String> {
     
     /** HTTPS scheme protocol.*/
     @Nonnull @NotEmpty public static final String HTTPS = "https://";
@@ -54,7 +57,8 @@ public class DuoIssuerClaimLookupStrategy implements Function<ProfileRequestCont
     }
 
     @Override
-    public String apply(@Nonnull final ProfileRequestContext context) {
+    public String apply(@Nonnull final ProfileRequestContext context,
+            @Nonnull final JWTClaimsSet cliams) {
         
         final AuthenticationContext authnContext = context.getSubcontext(AuthenticationContext.class);
         if (authnContext == null) {
diff --git a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoNonceClaimLookupStrategy.java b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoNonceClaimLookupStrategy.java
index c765f47..9d8a97b 100644
--- a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoNonceClaimLookupStrategy.java
+++ b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoNonceClaimLookupStrategy.java
@@ -17,12 +17,14 @@
 
 package net.shibboleth.idp.plugin.authn.duo.impl;
 
-import java.util.function.Function;
+import java.util.function.BiFunction;
 
 import javax.annotation.Nonnull;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
+import com.nimbusds.jwt.JWTClaimsSet;
+
 import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.authn.duo.context.DuoAuthenticationContext;
 import net.shibboleth.idp.plugin.authn.duo.context.DuoOIDCAuthenticationContext;
@@ -30,10 +32,11 @@ import net.shibboleth.idp.plugin.authn.duo.context.DuoOIDCAuthenticationContext;
 /** 
  * Find the nonce from the {@link DuoAuthenticationContext}. Returns null if not found.
  */
-public class DuoNonceClaimLookupStrategy implements Function<ProfileRequestContext, String> {
+public class DuoNonceClaimLookupStrategy implements BiFunction<ProfileRequestContext,JWTClaimsSet, String> {
 
     @Override
-    public String apply(@Nonnull final ProfileRequestContext context) {
+    public String apply(@Nonnull final ProfileRequestContext context,
+            @Nonnull final JWTClaimsSet cliams) {
         
         final AuthenticationContext authnContext = context.getSubcontext(AuthenticationContext.class);
         if (authnContext == null) {
diff --git a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoUsernameClaimLookupStrategy.java b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoUsernameClaimLookupStrategy.java
index 18ed4bf..adb5133 100644
--- a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoUsernameClaimLookupStrategy.java
+++ b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoUsernameClaimLookupStrategy.java
@@ -17,12 +17,14 @@
 
 package net.shibboleth.idp.plugin.authn.duo.impl;
 
-import java.util.function.Function;
+import java.util.function.BiFunction;
 
 import javax.annotation.Nonnull;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
+import com.nimbusds.jwt.JWTClaimsSet;
+
 import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.authn.duo.context.DuoAuthenticationContext;
 import net.shibboleth.idp.plugin.authn.duo.context.DuoOIDCAuthenticationContext;
@@ -30,10 +32,11 @@ import net.shibboleth.idp.plugin.authn.duo.context.DuoOIDCAuthenticationContext;
 /** 
  * Find the authenticating principals username from the {@link DuoAuthenticationContext}. Returns null if not found.
  */
-public class DuoUsernameClaimLookupStrategy implements Function<ProfileRequestContext, String> {
+public class DuoUsernameClaimLookupStrategy implements BiFunction<ProfileRequestContext,JWTClaimsSet, String> {
 
     @Override
-    public String apply(@Nonnull final ProfileRequestContext context) {
+    public String apply(@Nonnull final ProfileRequestContext context,
+            @Nonnull final JWTClaimsSet cliams) {
         
         final AuthenticationContext authnContext = context.getSubcontext(AuthenticationContext.class);
         if (authnContext == null) {
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoAudienceClaimLookupStrategyTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoAudienceClaimLookupStrategyTest.java
index b0d0ce3..cb64c5e 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoAudienceClaimLookupStrategyTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoAudienceClaimLookupStrategyTest.java
@@ -3,6 +3,8 @@ package net.shibboleth.idp.plugin.authn.duo.impl;
 
 import org.testng.annotations.Test;
 
+import com.nimbusds.jwt.JWTClaimsSet;
+
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
 import static org.testng.Assert.assertEquals;
@@ -33,20 +35,20 @@ public class DuoAudienceClaimLookupStrategyTest extends AbstractDuoActionTest{
     public void applySuccess() {
         addDuoContext();
         addDuoIntegrationToContext();
-        final String audience = strategy.apply(prc);
+        final String audience = strategy.apply(prc,new JWTClaimsSet.Builder().build());
         assertEquals(audience, dc.getIntegration().getClientId());
     }
     
     @Test
     public void applyNoDuoContext() {
-        final String audience = strategy.apply(prc);
+        final String audience = strategy.apply(prc,new JWTClaimsSet.Builder().build());
         assertEquals(audience, null);
     }
     
     @Test
     public void applyNoDuoIntegration() {
         addDuoContext();
-        final String audience = strategy.apply(prc);
+        final String audience = strategy.apply(prc,new JWTClaimsSet.Builder().build());
         assertEquals(audience, null);
     }
 }
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoIssuerClaimLookupStrategyTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoIssuerClaimLookupStrategyTest.java
index b6ad8cd..d18b53d 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoIssuerClaimLookupStrategyTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoIssuerClaimLookupStrategyTest.java
@@ -3,6 +3,8 @@ package net.shibboleth.idp.plugin.authn.duo.impl;
 
 import org.testng.annotations.Test;
 
+import com.nimbusds.jwt.JWTClaimsSet;
+
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
 import static org.testng.Assert.assertEquals;
@@ -35,20 +37,20 @@ public class DuoIssuerClaimLookupStrategyTest extends AbstractDuoActionTest{
         addDuoIntegrationToContext();
         //set a different path for testing.
         strategy.setIssuerPath("/oauth/v2/token");
-        final String issuer = strategy.apply(prc);
+        final String issuer = strategy.apply(prc,new JWTClaimsSet.Builder().build());
         assertEquals(issuer, "https://"+dc.getIntegration().getAPIHost()+"/oauth/v2/token");
     }
     
     @Test
     public void applyNoDuoContext() {
-        final String issuer = strategy.apply(prc);
+        final String issuer = strategy.apply(prc,new JWTClaimsSet.Builder().build());
         assertEquals(issuer, null);
     }
     
     @Test
     public void applyNoDuoIntegration() {
         addDuoContext();
-        final String issuer = strategy.apply(prc);
+        final String issuer = strategy.apply(prc,new JWTClaimsSet.Builder().build());
         assertEquals(issuer, null);
     }
 }
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoNonceClaimLookupStrategyTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoNonceClaimLookupStrategyTest.java
index c998253..d8c2fd0 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoNonceClaimLookupStrategyTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoNonceClaimLookupStrategyTest.java
@@ -3,6 +3,8 @@ package net.shibboleth.idp.plugin.authn.duo.impl;
 
 import org.testng.annotations.Test;
 
+import com.nimbusds.jwt.JWTClaimsSet;
+
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
 import static org.testng.Assert.assertEquals;
@@ -34,20 +36,20 @@ public class DuoNonceClaimLookupStrategyTest extends AbstractDuoActionTest{
         addDuoContext();
         addDuoIntegrationToContext();
         dc.setNonce("testnonce");
-        final String nonce = strategy.apply(prc);
+        final String nonce = strategy.apply(prc,new JWTClaimsSet.Builder().build());
         assertEquals(nonce, "testnonce");
     }
     
     @Test
     public void applyNoDuoContext() {
-        final String nonce = strategy.apply(prc);
+        final String nonce = strategy.apply(prc,new JWTClaimsSet.Builder().build());
         assertEquals(nonce, null);
     }
     
     @Test
     public void applyNoDuoIntegration() {
         addDuoContext();
-        final String nonce = strategy.apply(prc);
+        final String nonce = strategy.apply(prc,new JWTClaimsSet.Builder().build());
         assertEquals(nonce, null);
     }
 }
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoUsernameClaimLookupStrategyTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoUsernameClaimLookupStrategyTest.java
index 626b085..cab2e77 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoUsernameClaimLookupStrategyTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoUsernameClaimLookupStrategyTest.java
@@ -3,6 +3,8 @@ package net.shibboleth.idp.plugin.authn.duo.impl;
 
 import org.testng.annotations.Test;
 
+import com.nimbusds.jwt.JWTClaimsSet;
+
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
 import static org.testng.Assert.assertEquals;
@@ -34,7 +36,7 @@ public class DuoUsernameClaimLookupStrategyTest extends AbstractDuoActionTest{
         addDuoContext();
         addDuoIntegrationToContext();
         dc.setUsername("username");
-        final String username = strategy.apply(prc);
+        final String username = strategy.apply(prc,new JWTClaimsSet.Builder().build());
         assertEquals(username, "username");
     }
     
@@ -43,13 +45,13 @@ public class DuoUsernameClaimLookupStrategyTest extends AbstractDuoActionTest{
         addDuoContext();
         addDuoIntegrationToContext();
         dc.setUsername(null);
-        final String username = strategy.apply(prc);
+        final String username = strategy.apply(prc,new JWTClaimsSet.Builder().build());
         assertEquals(username, null);
     }
     
     @Test
     public void applyNoDuoContext() {
-        final String username = strategy.apply(prc);
+        final String username = strategy.apply(prc,new JWTClaimsSet.Builder().build());
         assertEquals(username, null);
     }
     

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


More information about the commits mailing list