[java-plugin-shibd] branch main updated: JSHIBD-17 - Support DDF nodes for session data in AbstractTokenConsumerResponseAction

Codeberg noreply at shibboleth.net
Fri Dec 19 14:21:50 UTC 2025


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

codeberg pushed a commit to branch main
in repository java-plugin-shibd.

View the commit online:
https://codeberg.org/Shibboleth/java-plugin-shibd/commit/74c6a177e5bc5ace652d1b47c3b883efc8c6c2ac

The following commit(s) were added to refs/heads/main by this push:
     new 74c6a17  JSHIBD-17 - Support DDF nodes for session data in AbstractTokenConsumerResponseAction
74c6a17 is described below

commit 74c6a177e5bc5ace652d1b47c3b883efc8c6c2ac
Author: Phil Smart <philip.smart at jisc.ac.uk>
AuthorDate: Fri Dec 19 14:20:56 2025 +0000

    JSHIBD-17 - Support DDF nodes for session data in AbstractTokenConsumerResponseAction
    
         - Change session.opaque to a structure
         - Change getSessionData to a DDF
         - Add a session data DDF to the session.opaque structure
    
    https://shibboleth.atlassian.net/browse/JSHIBD-17
---
 .../sp/profile/AbstractTokenConsumerResponseAction.java  | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/sp-server-api/src/main/java/net/shibboleth/sp/profile/AbstractTokenConsumerResponseAction.java b/sp-server-api/src/main/java/net/shibboleth/sp/profile/AbstractTokenConsumerResponseAction.java
index 26ef7c9..f841454 100644
--- a/sp-server-api/src/main/java/net/shibboleth/sp/profile/AbstractTokenConsumerResponseAction.java
+++ b/sp-server-api/src/main/java/net/shibboleth/sp/profile/AbstractTokenConsumerResponseAction.java
@@ -104,16 +104,16 @@ public abstract class AbstractTokenConsumerResponseAction extends AbstractApplic
             attributeContext.getIdPAttributes().forEach((id, attr) -> {
                 final DDF obj = new DDF(id).list();
                 for (final IdPAttributeValue value : attr.getValues()) {
-                    if (value instanceof ScopedStringAttributeValue scoped) {
+                    if (value instanceof final ScopedStringAttributeValue scoped) {
                         final DDF valobj = new DDF(null).structure();
                         valobj.addmember("value").string(scoped.getValue());
                         valobj.addmember("scope").string(scoped.getScope());
                         obj.add(valobj);
-                    } else if (value instanceof StringAttributeValue str) {
+                    } else if (value instanceof final StringAttributeValue str) {
                         obj.add(new DDF(null).string(str.getValue()));
-                    } else if (value instanceof DateTimeAttributeValue datetime) {
+                    } else if (value instanceof final DateTimeAttributeValue datetime) {
                         obj.add(new DDF(null).longinteger(datetime.getValue().getEpochSecond()));
-                    } else if (value instanceof ByteAttributeValue bytes) {
+                    } else if (value instanceof final ByteAttributeValue bytes) {
                         try {
                             obj.add(new DDF(null).string(Base64Support.encode(bytes.getValue(), false)));
                         } catch (final EncodingException e) {
@@ -129,9 +129,9 @@ public abstract class AbstractTokenConsumerResponseAction extends AbstractApplic
             log.debug("{} No AttributeContext or no attributes found", getLogPrefix());
         }
         
-        final String sessionData = getSessionData(profileRequestContext);
+        final DDF sessionData = getSessionData(profileRequestContext);
         if (sessionData != null) {
-            output.addmember(ConsumerConstants.SESSION_OPAQUE).string(sessionData);
+            output.addmember(ConsumerConstants.SESSION_OPAQUE).structure().add(sessionData);
         }
         
         final RemotedHttpServletResponse remotedResponse = agentRequestContext.getRemotedHttpServletResponse();
@@ -165,8 +165,8 @@ public abstract class AbstractTokenConsumerResponseAction extends AbstractApplic
      * 
      * @param profileRequestContext profile request context
      * 
-     * @return opaque session data suitable for transport as Unicode data
+     * @return opaque session data as a {@link DDF} node, or null if no session data is provided
      */
-    @Nullable protected abstract String getSessionData(@Nonnull final ProfileRequestContext profileRequestContext);
+    @Nullable protected abstract DDF getSessionData(@Nonnull final ProfileRequestContext profileRequestContext);
 
 }
\ No newline at end of file

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


More information about the commits mailing list