[java-opensaml COMMIT] in /trunk/opensaml-saml-impl/src: main/java/org/opensaml/saml/saml2/profile/impl/AddSubjectCon...

noreply at shibboleth.net noreply at shibboleth.net
Wed Mar 5 19:12:21 EST 2014


Author: scantor
Date: Wed Mar  5 19:12:20 2014
New Revision: 3675

URL: http://svn.shibboleth.net/view/java-opensaml?rev=3675&view=rev
Log:
Include pluggable and default population of SubjectConfirmationData

Modified:
    trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/profile/impl/AddSubjectConfirmationToSubjects.java
    trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/profile/impl/AddSubjectConfirmationToSubjectsTest.java

Modified: trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/profile/impl/AddSubjectConfirmationToSubjects.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/profile/impl/AddSubjectConfirmationToSubjects.java?rev=3675&r1=3674&r2=3675&view=diff
==============================================================================
--- trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/profile/impl/AddSubjectConfirmationToSubjects.java (original)
+++ trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/profile/impl/AddSubjectConfirmationToSubjects.java Wed Mar  5 19:12:20 2014
@@ -17,9 +17,12 @@
 
 package org.opensaml.saml.saml2.profile.impl;
 
+import java.net.URI;
+
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
+import org.joda.time.DateTime;
 import org.opensaml.profile.ProfileException;
 import org.opensaml.profile.action.AbstractProfileAction;
 import org.opensaml.profile.action.ActionSupport;
@@ -35,12 +38,17 @@
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
 import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
+import org.opensaml.messaging.context.MessageContext;
 import org.opensaml.messaging.context.navigate.MessageLookup;
 import org.opensaml.saml.common.SAMLObjectBuilder;
+import org.opensaml.saml.common.binding.BindingException;
+import org.opensaml.saml.common.binding.SAMLBindingSupport;
+import org.opensaml.saml.common.messaging.context.SAMLMessageInfoContext;
 import org.opensaml.saml.saml2.core.Assertion;
 import org.opensaml.saml.saml2.core.Response;
 import org.opensaml.saml.saml2.core.Subject;
 import org.opensaml.saml.saml2.core.SubjectConfirmation;
+import org.opensaml.saml.saml2.core.SubjectConfirmationData;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -72,12 +80,27 @@
 
     /** Builder for SubjectConfirmation objects. */
     @Nonnull private final SAMLObjectBuilder<SubjectConfirmation> confirmationBuilder;
+
+    /** Builder for SubjectConfirmation objects. */
+    @Nonnull private final SAMLObjectBuilder<SubjectConfirmationData> confirmationDataBuilder;
     
     /** Flag controlling whether to overwrite existing confirmations. */
     private boolean overwriteExisting;
     
     /** Strategy used to locate the {@link Response} to operate on. */
-    @Nonnull private Function<ProfileRequestContext, Response> responseLookupStrategy;
+    @Nonnull private Function<ProfileRequestContext,Response> responseLookupStrategy;
+    
+    /** Optional strategy to obtain value for {@link SubjectConfirmationData#getAddress()}. */
+    @Nullable private Function<ProfileRequestContext,String> addressLookupStrategy;
+
+    /** Optional strategy to obtain value for {@link SubjectConfirmationData#getInResponseTo()}. */
+    @Nullable private Function<ProfileRequestContext,String> inResponseToLookupStrategy;
+
+    /** Optional strategy to obtain value for {@link SubjectConfirmationData#getRecipient()}. */
+    @Nullable private Function<ProfileRequestContext,String> recipientLookupStrategy;
+
+    /** Optional strategy to obtain value for {@link SubjectConfirmationData#getNotOnOrAfter()}. */
+    @Nullable private Function<ProfileRequestContext,Long> lifetimeLookupStrategy;
     
     /** Method to add. */
     @NonnullAfterInit private String confirmationMethod;
@@ -93,11 +116,68 @@
         confirmationBuilder = (SAMLObjectBuilder<SubjectConfirmation>)
                 XMLObjectProviderRegistrySupport.getBuilderFactory().<SubjectConfirmation>getBuilderOrThrow(
                         SubjectConfirmation.DEFAULT_ELEMENT_NAME);
-        
+        confirmationDataBuilder = (SAMLObjectBuilder<SubjectConfirmationData>)
+                XMLObjectProviderRegistrySupport.getBuilderFactory().<SubjectConfirmationData>getBuilderOrThrow(
+                        SubjectConfirmationData.DEFAULT_ELEMENT_NAME);
         overwriteExisting = true;
-        
         responseLookupStrategy =
                 Functions.compose(new MessageLookup<>(Response.class), new OutboundMessageContextLookup());
+        
+        // Default pulls from servlet request.
+        addressLookupStrategy = new Function<ProfileRequestContext,String>() {
+            public String apply(ProfileRequestContext input) {
+                final String address = getHttpServletRequest() != null ? getHttpServletRequest().getRemoteAddr() : null;
+                log.debug("{} Setting confirmation data Address to {}", getLogPrefix(),
+                        address != null ? address : "(none)");
+                return address;

[... 254 lines stripped ...]


More information about the commits mailing list