[java-oidc-common] 01/02: Extend SSO config with access token type setting.

Scott Cantor cantor.2 at osu.edu
Mon Apr 18 17:33:15 UTC 2022


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

scantor pushed a commit to branch dev/JOIDC-7
in repository java-oidc-common.

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

commit 9335253ada3dfc9f6913c38b308bb81b3b0c977b
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Thu Apr 14 14:49:05 2022 -0400

    Extend SSO config with access token type setting.
---
 .../config/AbstractOIDCSSOConfiguration.java       | 39 ++++++++++++++++++++++
 .../navigate/AccessTokenTypeLookupFunction.java    |  3 ++
 .../config/OAuth2TokenAudienceConfiguration.java   |  1 -
 3 files changed, 42 insertions(+), 1 deletion(-)

diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/AbstractOIDCSSOConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/AbstractOIDCSSOConfiguration.java
index ce49d2c..95b3c7f 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/AbstractOIDCSSOConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/AbstractOIDCSSOConfiguration.java
@@ -71,6 +71,9 @@ public abstract class AbstractOIDCSSOConfiguration extends AbstractOAuth2FlowAwa
     /** Lookup function to supply ID token lifetime. */
     @Nonnull private Function<ProfileRequestContext,Duration> idTokenLifetimeLookupStrategy;
 
+    /** Lookup functioon to supply access token type. */
+    @Nonnull private Function<ProfileRequestContext,String> accessTokenTypeLookupStrategy;
+    
     /** Lookup function to supply access token lifetime. */
     @Nonnull private Function<ProfileRequestContext,Duration> accessTokenLifetimeLookupStrategy;
     
@@ -98,6 +101,7 @@ public abstract class AbstractOIDCSSOConfiguration extends AbstractOAuth2FlowAwa
         allowPKCEPlainPredicate = Predicates.alwaysFalse();
         
         idTokenLifetimeLookupStrategy = FunctionSupport.constant(Duration.ofHours(1));
+        accessTokenTypeLookupStrategy = FunctionSupport.constant(null);
         accessTokenLifetimeLookupStrategy = FunctionSupport.constant(Duration.ofMinutes(10));
         refreshTokenLifetimeLookupStrategy = FunctionSupport.constant(Duration.ofHours(2));
         
@@ -278,6 +282,41 @@ public abstract class AbstractOIDCSSOConfiguration extends AbstractOAuth2FlowAwa
     public void setIDTokenLifetimeLookupStrategy(@Nonnull final Function<ProfileRequestContext,Duration> strategy) {
         idTokenLifetimeLookupStrategy = Constraint.isNotNull(strategy, "Lookup strategy cannot be null");
     }
+    
+    /**
+     * Get access token type.
+     * 
+     * @param profileRequestContext profile request context
+     * 
+     * @return access token type, or null for unspecified/opaque
+     * 
+     * @since 2.1.0
+     */
+     @Nullable @NotEmpty public String getAccessTokenType(@Nullable final ProfileRequestContext profileRequestContext) {
+         return accessTokenTypeLookupStrategy.apply(profileRequestContext);
+     }
+    
+    /**
+     * Set access token type.
+     * 
+     * @param type token type, or null for unspecified/opaque
+     * 
+     * @since 2.1.0
+     */
+     public void setAccessTokenType(@Nullable @NotEmpty final String type) {
+         accessTokenTypeLookupStrategy = FunctionSupport.constant(StringSupport.trimOrNull(type));
+     }
+    
+    /**
+     * Set lookup strategy for access token type.
+     * 
+     * @param strategy lookup strategy
+     * 
+     * @since 2.1.0
+     */
+     public void setAccessTokenTypeLookupStrategy(@Nonnull final Function<ProfileRequestContext,String> strategy) {
+         accessTokenTypeLookupStrategy = Constraint.isNotNull(strategy, "Lookup strategy cannot be null");
+     }
 
     /**
      * Get access token lifetime.
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AccessTokenTypeLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AccessTokenTypeLookupFunction.java
index 1693732..41a91ac 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AccessTokenTypeLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AccessTokenTypeLookupFunction.java
@@ -24,6 +24,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import net.shibboleth.idp.profile.config.ProfileConfiguration;
 import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
+import net.shibboleth.oidc.profile.config.AbstractOIDCSSOConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenAudienceConfiguration;
 
 /**
@@ -44,6 +45,8 @@ public class AccessTokenTypeLookupFunction extends AbstractRelyingPartyLookupFun
             final ProfileConfiguration pc = rpc.getProfileConfig();
             if (pc instanceof OAuth2TokenAudienceConfiguration) {
                 return ((OAuth2TokenAudienceConfiguration) pc).getAccessTokenType(input);
+            } else if (pc instanceof AbstractOIDCSSOConfiguration) {
+                return ((AbstractOIDCSSOConfiguration) pc).getAccessTokenType(input);
             }
         }
         
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenAudienceConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenAudienceConfiguration.java
index 2090b9e..6d0a9bf 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenAudienceConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenAudienceConfiguration.java
@@ -167,7 +167,6 @@ public class OAuth2TokenAudienceConfiguration  extends AbstractConditionalProfil
     public void setEncryptionOptionalPredicate(@Nonnull final Predicate<ProfileRequestContext> condition) {
         encryptionOptionalPredicate = Constraint.isNotNull(condition, "Encryption optional predicate cannot be null");
     }
-
     
     /**
      * Get access token type.

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


More information about the commits mailing list