[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