[java-plugin-shibd] branch main updated: Finish draft of consumer response action.

Scott Cantor cantor.2 at osu.edu
Wed Sep 18 14:18:25 UTC 2024


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

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

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

The following commit(s) were added to refs/heads/main by this push:
     new d1f5578  Finish draft of consumer response action.
d1f5578 is described below

commit d1f5578325897a6d0b682131615a63023979d566
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Wed Sep 18 10:18:22 2024 -0400

    Finish draft of consumer response action.
---
 .../AbstractTokenConsumerResponseAction.java       | 32 +++++++++++++++++-----
 1 file changed, 25 insertions(+), 7 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 893d2c0..2358c17 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
@@ -25,6 +25,11 @@ import org.opensaml.profile.action.EventIds;
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.slf4j.Logger;
 
+import net.shibboleth.idp.attribute.ByteAttributeValue;
+import net.shibboleth.idp.attribute.DateTimeAttributeValue;
+import net.shibboleth.idp.attribute.IdPAttributeValue;
+import net.shibboleth.idp.attribute.ScopedStringAttributeValue;
+import net.shibboleth.idp.attribute.StringAttributeValue;
 import net.shibboleth.idp.attribute.context.AttributeContext;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.logic.Constraint;
@@ -54,9 +59,6 @@ import net.shibboleth.sp.messaging.RemotedHttpServletResponse;
  * @event {@link EventIds#PROCEED_EVENT_ID}
  */
 public abstract class AbstractTokenConsumerResponseAction extends AbstractApplicationAction {
-
-    /** Static byte array with query string separator. */
-    @Nonnull @NotEmpty public static byte[] QUERY_SEPERATOR = {'?'};
     
     /** Class logger. */
     @Nonnull private Logger log = LoggerFactory.getLogger(AbstractTokenConsumerResponseAction.class);
@@ -115,14 +117,26 @@ public abstract class AbstractTokenConsumerResponseAction extends AbstractApplic
             agentRequestContext.setRemotedHttpServletResponse(new RemotedHttpServletResponse(httpResponse));
         }
         
-        final byte[] resource = recoverState(profileRequestContext, agentRequestContext);
-        
         final AttributeContext attributeContext = attributeContextLookupStrategy.apply(profileRequestContext);
         if (attributeContext != null) {
+            log.debug("{} Serializing attributes for agent", getLogPrefix());
             final DDF attrlist = output.getmember(ConsumerConstants.SESSION_ATTRIBUTES).list();
             attributeContext.getIdPAttributes().forEach((id, attr) -> {
                 final DDF obj = new DDF(id).list();
-                // TODO values
+                for (final IdPAttributeValue value : attr.getValues()) {
+                    if (value instanceof 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) {
+                        obj.add(new DDF(null).string(str.getValue()));
+                    } else if (value instanceof DateTimeAttributeValue datetime) {
+                        obj.add(new DDF(null).longinteger(datetime.getValue().getEpochSecond()));
+                    } else if (value instanceof ByteAttributeValue bytes) {
+                        obj.add(new DDF(null).unsafe_string(bytes.getValue()));
+                    }
+                }
                 attrlist.add(obj);
             });
         } else {
@@ -136,7 +150,11 @@ public abstract class AbstractTokenConsumerResponseAction extends AbstractApplic
         
         final RemotedHttpServletResponse remotedResponse = agentRequestContext.getRemotedHttpServletResponse();
         assert remotedResponse != null;
-        remotedResponse.sendRedirect(resource);
+
+        final byte[] resource = recoverState(profileRequestContext, agentRequestContext);
+        if (resource != null) {
+            remotedResponse.sendRedirect(resource);
+        }
     }
     
     /**

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


More information about the commits mailing list