[java-plugin-shibd-oidc] 02/06: JSHIBDOIDC-22 - Store off iss, sid in opaque session data to support logout

Codeberg noreply at shibboleth.net
Fri Jul 3 13:32:59 UTC 2026


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

codeberg pushed a commit to branch dev/JSHIBDOIDC-28
in repository java-plugin-shibd-oidc.

View the commit online:
https://codeberg.org/Shibboleth/java-plugin-shibd-oidc/commit/877df9ec5db598f35302fe1c75f4574b768d49bf

commit 877df9ec5db598f35302fe1c75f4574b768d49bf
Author: Phil Smart <philip.smart at jisc.ac.uk>
AuthorDate: Wed Jun 17 17:37:54 2026 +0100

    JSHIBDOIDC-22 - Store off iss, sid in opaque session data to support
    logout
    
     - Add missing constants
    
    https://shibboleth.atlassian.net/browse/JSHIBDOIDC-22
---
 .../sp/oidc/profile/impl/PrepareAgentResponse.java | 35 +++++++++++++++++-----
 1 file changed, 28 insertions(+), 7 deletions(-)

diff --git a/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/PrepareAgentResponse.java b/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/PrepareAgentResponse.java
index 1d65ffd..bd2cf7d 100644
--- a/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/PrepareAgentResponse.java
+++ b/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/PrepareAgentResponse.java
@@ -58,6 +58,27 @@ import net.shibboleth.sp.profile.AbstractTokenConsumerResponseAction;
  */
 public class PrepareAgentResponse extends AbstractTokenConsumerResponseAction {
     
+    /** Parameter for accessing the access_token from opaque data. */
+    @Nonnull @NotEmpty public static final String ACCESS_TOKEN_PARAM = "access_token";
+    
+    /** Parameter for accessing the refresh_token from opaque data. */
+    @Nonnull @NotEmpty public static final String REFRESH_TOKEN_PARAM = "refresh_token";
+    
+    /** Parameter for accessing the id_token from opaque data. */
+    @Nonnull @NotEmpty public static final String ID_TOKEN_PARAM = "id_token";
+    
+    /** Parameter for accessing the token_type from opaque data. */
+    @Nonnull @NotEmpty public static final String TOKEN_TYPE_PARAM = "token_type";
+    
+    /** Parameter for accessing the expires_in from opaque data. */
+    @Nonnull @NotEmpty public static final String EXPIRES_IN_PARAM = "expires_in";
+    
+    /** Parameter for accessing the scope from opaque data. */
+    @Nonnull @NotEmpty public static final String SCOPE_PARAM = "scope";
+    
+    /** Parameter for accessing the issued_token_type from opaque data. */
+    @Nonnull @NotEmpty public static final String ISSUED_TOKEN_TYPE_PARAM = "issued_token_type";
+    
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(PrepareAgentResponse.class);
     
@@ -140,7 +161,7 @@ public class PrepareAgentResponse extends AbstractTokenConsumerResponseAction {
                 try {
                     final String refreshTokenString = refreshToken.getValue();
                     assert refreshTokenString != null;
-                    tokens.addmember("refresh_token").string(conditionallySeal(refreshTokenString));
+                    tokens.addmember(REFRESH_TOKEN_PARAM).string(conditionallySeal(refreshTokenString));
                 } catch (final DataSealerException e) {
                     log.debug("{} Error sealing refresh token for session data", getLogPrefix(), e);
                     // Is not an error, but the refresh token won't be stored.
@@ -153,7 +174,7 @@ public class PrepareAgentResponse extends AbstractTokenConsumerResponseAction {
                 try {
                     final String accessTokenString = accessToken.getValue();
                     assert accessTokenString != null;
-                    tokens.addmember("access_token").string(conditionallySeal(accessTokenString));
+                    tokens.addmember(ACCESS_TOKEN_PARAM).string(conditionallySeal(accessTokenString));
                     accessTokenAdded = true;
                 } catch (final DataSealerException e) {
                     log.debug("{} Error sealing access token for session data", getLogPrefix(), e);
@@ -168,10 +189,10 @@ public class PrepareAgentResponse extends AbstractTokenConsumerResponseAction {
                 final var localAccessToken = accessToken;
                 // Access token can not be null here.
                 assert localAccessToken != null;
-                tokens.addmember("token_type").string(localAccessToken.getType().getValue());
-                tokens.addmember("expires_in").longinteger(localAccessToken.getLifetime());
+                tokens.addmember(TOKEN_TYPE_PARAM).string(localAccessToken.getType().getValue());
+                tokens.addmember(EXPIRES_IN_PARAM).longinteger(localAccessToken.getLifetime());
                 if (localAccessToken.getScope() != null) {
-                    tokens.addmember("scope").string(localAccessToken.getScope()
+                    tokens.addmember(SCOPE_PARAM).string(localAccessToken.getScope()
                             .stream()
                             .map(String::valueOf)
                             .filter(s -> !s.isBlank())
@@ -179,7 +200,7 @@ public class PrepareAgentResponse extends AbstractTokenConsumerResponseAction {
                             .collect(java.util.stream.Collectors.joining(" ")));
                 }
                 if (localAccessToken.getIssuedTokenType() != null) {
-                    tokens.addmember("issued_token_type")
+                    tokens.addmember(ISSUED_TOKEN_TYPE_PARAM)
                     .string(localAccessToken.getIssuedTokenType().getURI().toString());
                 }
             }
@@ -188,7 +209,7 @@ public class PrepareAgentResponse extends AbstractTokenConsumerResponseAction {
                 final String serialisedIdToken = idToken.serialize();
                 if (serialisedIdToken != null) {
                     try {
-                        tokens.addmember("id_token").string(conditionallySeal(serialisedIdToken));
+                        tokens.addmember(ID_TOKEN_PARAM).string(conditionallySeal(serialisedIdToken));
                     } catch (final DataSealerException e) {
                         log.debug("{} Error sealing id_token for session data", getLogPrefix(), e);
                         // Is not an error, but the id_token will not be stored for later use e.g., logout

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


More information about the commits mailing list