[java-identity-provider] branch master updated: Extend Proxy principal with restriction content.

Scott Cantor cantor.2 at osu.edu
Tue Nov 19 08:51:29 EST 2019


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

scantor pushed a commit to branch master
in repository java-identity-provider.

View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=43f3a860d990efe6e557c223345cdde659bfbdeb

The following commit(s) were added to refs/heads/master by this push:
       new  43f3a86   Extend Proxy principal with restriction content.
43f3a86 is described below

commit 43f3a860d990efe6e557c223345cdde659bfbdeb
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Tue Nov 19 08:51:25 2019 -0500

    Extend Proxy principal with restriction content.
---
 .../principal/ProxyAuthenticationPrincipal.java    |  59 +++++++++-
 .../ProxyAuthenticationPrincipalSerializer.java    |  56 ++++++++-
 .../DefaultAuthenticationResultSerializerTest.java | 130 +++++++++++----------
 .../idp/authn/impl/ProxyAuthenticationResult.json  |   2 +-
 4 files changed, 175 insertions(+), 72 deletions(-)

diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/principal/ProxyAuthenticationPrincipal.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/principal/ProxyAuthenticationPrincipal.java
index 1a50756..3bf5f73 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/principal/ProxyAuthenticationPrincipal.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/principal/ProxyAuthenticationPrincipal.java
@@ -23,8 +23,10 @@ import java.util.Collection;
 import java.util.List;
 
 import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 
 import net.shibboleth.utilities.java.support.annotation.constraint.Live;
+import net.shibboleth.utilities.java.support.annotation.constraint.NonNegative;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.logic.Constraint;
@@ -32,7 +34,8 @@ import net.shibboleth.utilities.java.support.logic.Constraint;
 import com.google.common.base.MoreObjects;
 
 /**
- * Principal that wraps a set of proxied authentication authorities.
+ * Principal that wraps a set of proxied authentication authorities and any restrictions
+ * on subsequent re-use.
  * 
  * @since 3.4.0
  */
@@ -41,9 +44,16 @@ public class ProxyAuthenticationPrincipal implements Principal {
     /** The authorities. */
     @Nonnull @NonnullElements private Collection<String> authorities;
 
+    /** The audiences. */
+    @Nonnull @NonnullElements private Collection<String> audiences;
+
+    /** Constrains additional proxy hops. */
+    @Nullable private Integer proxyCount;
+
     /** Constructor. */
     public ProxyAuthenticationPrincipal() {
         authorities = new ArrayList<>();
+        audiences = new ArrayList<>();
     }
 
     /**
@@ -55,8 +65,9 @@ public class ProxyAuthenticationPrincipal implements Principal {
         Constraint.isNotNull(proxiedAuthorities, "Proxied authority collection cannot be null");
         
         authorities = new ArrayList<>(List.copyOf(proxiedAuthorities));
+        audiences = new ArrayList<>();
     }
-
+    
     /** {@inheritDoc} */
     @Nonnull @NotEmpty public String getName() {
         return authorities.toString();
@@ -71,6 +82,44 @@ public class ProxyAuthenticationPrincipal implements Principal {
         return authorities;
     }
 
+    /**
+     * Get the mutable audience collection, the set of relying parties for which proxying
+     * is permissable.
+     * 
+     * @return the audiences
+     */
+    @Nonnull @NonnullElements @Live public Collection<String> getAudiences() {
+        return audiences;
+    }
+    
+    /**
+     * Gets the number of additional proxy hops that should be permitted.
+     * 
+     * <p>A value of 0 disallows further proxying, while a null implies no limit.</p>
+     * 
+     * @return proxy count
+     * 
+     * @since 4.0.0
+     */
+    @Nullable @NonNegative public Integer getProxyCount() {
+        return proxyCount;
+    }
+    
+    /**
+     * Sets the number of additional proxy hops that should be permitted.
+     * 
+     * <p>A value of 0 disallows further proxying, while a null implies no limit.</p>
+     * 
+     * @param count proxy count
+     * 
+     * @since 4.0.0
+     */
+    public void setProxyCount(@Nullable @NonNegative final Integer count) {
+        if (count != null) {
+            proxyCount = Constraint.isGreaterThanOrEqual(0, count, "Proxy count cannot be negative");
+        }
+    }
+
     /** {@inheritDoc} */
     @Override
     public int hashCode() {
@@ -98,7 +147,11 @@ public class ProxyAuthenticationPrincipal implements Principal {
     /** {@inheritDoc} */
     @Override
     public String toString() {
-        return MoreObjects.toStringHelper(this).add("authorities", authorities).toString();
+        return MoreObjects.toStringHelper(this)
+                .add("authorities", authorities)
+                .add("proxyCount", proxyCount)
+                .add("audiences", audiences)
+                .toString();
     }
     
 }
\ No newline at end of file
diff --git a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/principal/impl/ProxyAuthenticationPrincipalSerializer.java b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/principal/impl/ProxyAuthenticationPrincipalSerializer.java
index c96bb55..2a03424 100644
--- a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/principal/impl/ProxyAuthenticationPrincipalSerializer.java
+++ b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/principal/impl/ProxyAuthenticationPrincipalSerializer.java
@@ -31,6 +31,7 @@ import javax.json.JsonArray;
 import javax.json.JsonArrayBuilder;
 import javax.json.JsonBuilderFactory;
 import javax.json.JsonException;
+import javax.json.JsonNumber;
 import javax.json.JsonObject;
 import javax.json.JsonObjectBuilder;
 import javax.json.JsonReader;
@@ -53,9 +54,15 @@ import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 @ThreadSafe
 public class ProxyAuthenticationPrincipalSerializer extends AbstractPrincipalSerializer<String> {
 
-    /** Field name of principal content. */
+    /** Field name of authority content. */
     @Nonnull @NotEmpty private static final String PROXY_AUTH_FIELD = "AA";
 
+    /** Field name of proxy count. */
+    @Nonnull @NotEmpty private static final String PROXY_COUNT_FIELD = "PXC";
+
+    /** Field name of proxy audiences. */
+    @Nonnull @NotEmpty private static final String PROXY_AUD_FIELD = "AUD";
+
     /** Pattern used to determine if input is supported. */
     private static final Pattern JSON_PATTERN = Pattern.compile("^\\{\"AA\":.*\\}$");
 
@@ -79,13 +86,27 @@ public class ProxyAuthenticationPrincipalSerializer extends AbstractPrincipalSer
     /** {@inheritDoc} */
     @Nonnull @NotEmpty public String serialize(@Nonnull final Principal principal) throws IOException {
         
+        final ProxyAuthenticationPrincipal proxyPrincipal = (ProxyAuthenticationPrincipal) principal;
+        
         final JsonArrayBuilder arrayBuilder = getJsonArrayBuilder();
-        ((ProxyAuthenticationPrincipal) principal).getAuthorities().forEach(arrayBuilder::add);
+        proxyPrincipal.getAuthorities().forEach(arrayBuilder::add);
 
         final StringWriter sink = new StringWriter(32);
         
         try (final JsonGenerator gen = getJsonGenerator(sink)) {
-            gen.writeStartObject().write(PROXY_AUTH_FIELD, arrayBuilder.build()).writeEnd();
+            gen.writeStartObject().write(PROXY_AUTH_FIELD, arrayBuilder.build());
+            
+            if (proxyPrincipal.getProxyCount() != null) {
+                gen.write(PROXY_COUNT_FIELD, proxyPrincipal.getProxyCount());
+            }
+            
+            if (!proxyPrincipal.getAudiences().isEmpty()) {
+                final JsonArrayBuilder arrayBuilder2 = getJsonArrayBuilder();
+                proxyPrincipal.getAudiences().forEach(arrayBuilder2::add);
+                gen.write(PROXY_AUD_FIELD, arrayBuilder2.build());
+            }
+            
+            gen.writeEnd();
         }
         return sink.toString();
     }
@@ -95,6 +116,7 @@ public class ProxyAuthenticationPrincipalSerializer extends AbstractPrincipalSer
         return JSON_PATTERN.matcher(value).matches();
     }
 
+// Checkstyle: CyclomaticComplexity OFF
     /** {@inheritDoc} */
     @Nullable public ProxyAuthenticationPrincipal deserialize(@Nonnull @NotEmpty final String value)
             throws IOException {
@@ -113,13 +135,39 @@ public class ProxyAuthenticationPrincipalSerializer extends AbstractPrincipalSer
                         ret.getAuthorities().add(((JsonString) e).getString());
                     }
                 }
+                
+                final JsonValue count = ((JsonObject) st).get(PROXY_COUNT_FIELD);
+                if (count != null) {
+                    if (ValueType.NUMBER.equals(count.getValueType())) {
+                        ret.setProxyCount(((JsonNumber) count).intValueExact());
+                    } else {
+                        throw new IOException(
+                                "Found invalid data structure while parsing ProxyAuthenticationPrincipal");
+                    }
+                }
+                
+                final JsonValue audiences = ((JsonObject) st).get(PROXY_AUD_FIELD);
+                if (audiences != null) {
+                    if (ValueType.ARRAY.equals(audiences.getValueType())) {
+                        for (final JsonValue e : (JsonArray) audiences) {
+                            if (ValueType.STRING.equals(e.getValueType())) {
+                                ret.getAudiences().add(((JsonString) e).getString());
+                            }
+                        }
+                    } else {
+                        throw new IOException(
+                                "Found invalid data structure while parsing ProxyAuthenticationPrincipal");
+                    }
+                }
+                
                 return ret;
             }
-            throw new IOException("Serialized ProxyAuthenticationPrincipal missing array field");
+            throw new IOException("Serialized ProxyAuthenticationPrincipal missing primary array field");
         } catch (final JsonException e) {
             throw new IOException("Found invalid data structure while parsing ProxyAuthenticationPrincipal", e);
         }
     }
+// Checkstyle: CyclomaticComplexity ON
 
     /**
      * Get a {@link JsonObjectBuilder} in a thread-safe manner.
diff --git a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/DefaultAuthenticationResultSerializerTest.java b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/DefaultAuthenticationResultSerializerTest.java
index 35afab3..9bf64ee 100644
--- a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/DefaultAuthenticationResultSerializerTest.java
+++ b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/DefaultAuthenticationResultSerializerTest.java
@@ -17,14 +17,15 @@
 
 package net.shibboleth.idp.authn.impl;
 
+import static org.testng.Assert.*;
+
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.net.URISyntaxException;
 import java.time.Instant;
-import java.util.Arrays;
-import java.util.Collection;
 import java.util.Collections;
+import java.util.List;
 
 import javax.security.auth.Subject;
 
@@ -54,7 +55,6 @@ import org.ldaptive.LdapEntry;
 import org.ldaptive.SortBehavior;
 import org.ldaptive.jaas.LdapPrincipal;
 import org.springframework.core.io.ClassPathResource;
-import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
@@ -81,28 +81,28 @@ public class DefaultAuthenticationResultSerializerTest {
         serializer.initialize();
         try {
             serializer.deserialize(1, CONTEXT, KEY, fileToString(DATAPATH + "invalid.json"), ACTIVITY);
-            Assert.fail();
+            fail();
         } catch (IOException e) {
             
         }
 
         try {
             serializer.deserialize(1, CONTEXT, KEY, fileToString(DATAPATH + "noFlowId.json"), ACTIVITY);
-            Assert.fail();
+            fail();
         } catch (IOException e) {
             
         }
 
         try {
             serializer.deserialize(1, CONTEXT, KEY, fileToString(DATAPATH + "noInstant.json"), ACTIVITY);
-            Assert.fail();
+            fail();
         } catch (IOException e) {
             
         }
 
         try {
             serializer.deserialize(1, CONTEXT, KEY, fileToString(DATAPATH + "invalidAdditional.json"), ACTIVITY);
-            Assert.fail();
+            fail();
         } catch (IOException e) {
             
         }
@@ -118,15 +118,15 @@ public class DefaultAuthenticationResultSerializerTest {
         
         serializer.serialize(result);
         final String s2 = fileToString(DATAPATH + "simpleAuthenticationResult.json");
-        // Assert.assertEquals(s, s2); 
+        // assertEquals(s, s2); 
         
         final AuthenticationResult result2 = serializer.deserialize(1, CONTEXT, KEY, s2, ACTIVITY);
         
-        Assert.assertEquals(result.getAuthenticationFlowId(), result2.getAuthenticationFlowId());
-        Assert.assertEquals(result.getAuthenticationInstant(), result2.getAuthenticationInstant());
-        Assert.assertEquals(result.getLastActivityInstant(), result2.getLastActivityInstant());
-        Assert.assertEquals(result.getSubject(), result2.getSubject());
-        Assert.assertEquals(result.getAdditionalData(), result2.getAdditionalData());
+        assertEquals(result.getAuthenticationFlowId(), result2.getAuthenticationFlowId());
+        assertEquals(result.getAuthenticationInstant(), result2.getAuthenticationInstant());
+        assertEquals(result.getLastActivityInstant(), result2.getLastActivityInstant());
+        assertEquals(result.getSubject(), result2.getSubject());
+        assertEquals(result.getAdditionalData(), result2.getAdditionalData());
     }
 
     @Test public void testComplex() throws Exception {
@@ -139,14 +139,14 @@ public class DefaultAuthenticationResultSerializerTest {
         
         String s = serializer.serialize(result);
         String s2 = fileToString(DATAPATH + "complexAuthenticationResult.json");
-        Assert.assertEquals(s, s2);
+        assertEquals(s, s2);
         
         AuthenticationResult result2 = serializer.deserialize(1, CONTEXT, KEY, s2, ACTIVITY);
         
-        Assert.assertEquals(result.getAuthenticationFlowId(), result2.getAuthenticationFlowId());
-        Assert.assertEquals(result.getAuthenticationInstant(), result2.getAuthenticationInstant());
-        Assert.assertEquals(result.getLastActivityInstant(), result2.getLastActivityInstant());
-        Assert.assertEquals(result.getSubject(), result2.getSubject());
+        assertEquals(result.getAuthenticationFlowId(), result2.getAuthenticationFlowId());
+        assertEquals(result.getAuthenticationInstant(), result2.getAuthenticationInstant());
+        assertEquals(result.getLastActivityInstant(), result2.getLastActivityInstant());
+        assertEquals(result.getSubject(), result2.getSubject());
     }
 
     @Test public void testCreds() throws Exception {
@@ -167,7 +167,7 @@ public class DefaultAuthenticationResultSerializerTest {
             strategy.initialize();
             sealer.initialize();
         } catch (ComponentInitializationException e) {
-            Assert.fail(e.getMessage());
+            fail(e.getMessage());
         }
 
         final PasswordPrincipalSerializer pwSerializer = new PasswordPrincipalSerializer();
@@ -184,10 +184,10 @@ public class DefaultAuthenticationResultSerializerTest {
         
         final AuthenticationResult result2 = serializer.deserialize(1, CONTEXT, KEY, s, ACTIVITY);
         
-        Assert.assertEquals(result.getAuthenticationFlowId(), result2.getAuthenticationFlowId());
-        Assert.assertEquals(result.getAuthenticationInstant(), result2.getAuthenticationInstant());
-        Assert.assertEquals(result.getLastActivityInstant(), result2.getLastActivityInstant());
-        Assert.assertEquals(result.getSubject(), result2.getSubject());
+        assertEquals(result.getAuthenticationFlowId(), result2.getAuthenticationFlowId());
+        assertEquals(result.getAuthenticationInstant(), result2.getAuthenticationInstant());
+        assertEquals(result.getLastActivityInstant(), result2.getLastActivityInstant());
+        assertEquals(result.getSubject(), result2.getSubject());
     }
 
     @Test public void testSymbolic() throws Exception {
@@ -201,14 +201,14 @@ public class DefaultAuthenticationResultSerializerTest {
         
         final String s = serializer.serialize(result);
         final String s2 = fileToString(DATAPATH + "symbolicAuthenticationResult.json");
-        Assert.assertEquals(s, s2);
+        assertEquals(s, s2);
         
         final AuthenticationResult result2 = serializer.deserialize(1, CONTEXT, KEY, s2, ACTIVITY);
         
-        Assert.assertEquals(result.getAuthenticationFlowId(), result2.getAuthenticationFlowId());
-        Assert.assertEquals(result.getAuthenticationInstant(), result2.getAuthenticationInstant());
-        Assert.assertEquals(result.getLastActivityInstant(), result2.getLastActivityInstant());
-        Assert.assertEquals(result.getSubject(), result2.getSubject());
+        assertEquals(result.getAuthenticationFlowId(), result2.getAuthenticationFlowId());
+        assertEquals(result.getAuthenticationInstant(), result2.getAuthenticationInstant());
+        assertEquals(result.getLastActivityInstant(), result2.getLastActivityInstant());
+        assertEquals(result.getSubject(), result2.getSubject());
     }
     
 
@@ -232,15 +232,15 @@ public class DefaultAuthenticationResultSerializerTest {
 
         final String s = serializer.serialize(result);
         final String s2 = fileToString(DATAPATH + "LDAPAuthenticationResult.json");
-        Assert.assertEquals(s, s2);
+        assertEquals(s, s2);
 
         final AuthenticationResult result2 = serializer.deserialize(1, CONTEXT, KEY, s2, ACTIVITY);
 
-        Assert.assertEquals(result.getAuthenticationFlowId(), result2.getAuthenticationFlowId());
-        Assert.assertEquals(result.getAuthenticationInstant(), result2.getAuthenticationInstant());
-        Assert.assertEquals(result.getLastActivityInstant(), result2.getLastActivityInstant());
-        Assert.assertEquals(result.getSubject(), result2.getSubject());
-        Assert.assertEquals(
+        assertEquals(result.getAuthenticationFlowId(), result2.getAuthenticationFlowId());
+        assertEquals(result.getAuthenticationInstant(), result2.getAuthenticationInstant());
+        assertEquals(result.getLastActivityInstant(), result2.getLastActivityInstant());
+        assertEquals(result.getSubject(), result2.getSubject());
+        assertEquals(
                 ((LdapPrincipal) result.getSubject().getPrincipals().iterator().next()).getLdapEntry(),
                 ((LdapPrincipal) result2.getSubject().getPrincipals().iterator().next()).getLdapEntry());
     }
@@ -252,7 +252,7 @@ public class DefaultAuthenticationResultSerializerTest {
         
         final AuthenticationResult result = createResult("test", new Subject());
         final IdPAttributePrincipal prin = new IdPAttributePrincipal(new IdPAttribute("foo"));
-        prin.getAttribute().setValues(Arrays.asList(new StringAttributeValue("bar"),
+        prin.getAttribute().setValues(List.of(new StringAttributeValue("bar"),
                 new ScopedStringAttributeValue("bar2", "scope"), EmptyAttributeValue.ZERO_LENGTH,
                 new ByteAttributeValue("foo".getBytes())));
         
@@ -260,22 +260,22 @@ public class DefaultAuthenticationResultSerializerTest {
 
         final String s = serializer.serialize(result);
         final String s2 = fileToString(DATAPATH + "IdPAttributeAuthenticationResult.json");
-        Assert.assertEquals(s, s2);
+        assertEquals(s, s2);
 
         final AuthenticationResult result2 = serializer.deserialize(1, CONTEXT, KEY, s2, ACTIVITY);
 
-        Assert.assertEquals(result.getAuthenticationFlowId(), result2.getAuthenticationFlowId());
-        Assert.assertEquals(result.getAuthenticationInstant(), result2.getAuthenticationInstant());
-        Assert.assertEquals(result.getLastActivityInstant(), result2.getLastActivityInstant());
-        Assert.assertEquals(result.getSubject(), result2.getSubject());
+        assertEquals(result.getAuthenticationFlowId(), result2.getAuthenticationFlowId());
+        assertEquals(result.getAuthenticationInstant(), result2.getAuthenticationInstant());
+        assertEquals(result.getLastActivityInstant(), result2.getLastActivityInstant());
+        assertEquals(result.getSubject(), result2.getSubject());
         
         final IdPAttribute attribute =
                 ((IdPAttributePrincipal) result2.getSubject().getPrincipals().iterator().next()).getAttribute();
-        Assert.assertEquals(attribute.getValues().size(), 3);
-        Assert.assertEquals(((StringAttributeValue) attribute.getValues().get(0)).getValue(), "bar");
-        Assert.assertEquals(((StringAttributeValue)attribute.getValues().get(1)).getValue(), "bar2");
-        Assert.assertEquals(((ScopedStringAttributeValue) attribute.getValues().get(1)).getScope(), "scope");
-        Assert.assertEquals(attribute.getValues().get(2), EmptyAttributeValue.ZERO_LENGTH);
+        assertEquals(attribute.getValues().size(), 3);
+        assertEquals(((StringAttributeValue) attribute.getValues().get(0)).getValue(), "bar");
+        assertEquals(((StringAttributeValue)attribute.getValues().get(1)).getValue(), "bar2");
+        assertEquals(((ScopedStringAttributeValue) attribute.getValues().get(1)).getScope(), "scope");
+        assertEquals(attribute.getValues().get(2), EmptyAttributeValue.ZERO_LENGTH);
     }
 
     @Test public void testProxyAuthentication() throws Exception {
@@ -284,24 +284,26 @@ public class DefaultAuthenticationResultSerializerTest {
         serializer.initialize();
         
         final AuthenticationResult result = createResult("test", new Subject());
-        final ProxyAuthenticationPrincipal prin = new ProxyAuthenticationPrincipal();
-        prin.getAuthorities().addAll(Arrays.asList("foo","bar","baz"));
+        final ProxyAuthenticationPrincipal prin = new ProxyAuthenticationPrincipal(List.of("foo","bar","baz"));
+        prin.setProxyCount(10);
+        prin.getAudiences().add("zorkmid");
         result.getSubject().getPrincipals().add(prin);
 
         final String s = serializer.serialize(result);
         final String s2 = fileToString(DATAPATH + "ProxyAuthenticationResult.json");
-        Assert.assertEquals(s, s2);
+        assertEquals(s, s2);
 
         final AuthenticationResult result2 = serializer.deserialize(1, CONTEXT, KEY, s2, ACTIVITY);
 
-        Assert.assertEquals(result.getAuthenticationFlowId(), result2.getAuthenticationFlowId());
-        Assert.assertEquals(result.getAuthenticationInstant(), result2.getAuthenticationInstant());
-        Assert.assertEquals(result.getLastActivityInstant(), result2.getLastActivityInstant());
-        Assert.assertEquals(result.getSubject(), result2.getSubject());
+        assertEquals(result.getAuthenticationFlowId(), result2.getAuthenticationFlowId());
+        assertEquals(result.getAuthenticationInstant(), result2.getAuthenticationInstant());
+        assertEquals(result.getLastActivityInstant(), result2.getLastActivityInstant());
+        assertEquals(result.getSubject(), result2.getSubject());
         
-        final Collection<String> authorities =
-                ((ProxyAuthenticationPrincipal) result2.getSubject().getPrincipals().iterator().next()).getAuthorities();
-        Assert.assertEquals(authorities, prin.getAuthorities());
+        final ProxyAuthenticationPrincipal prin2 = (ProxyAuthenticationPrincipal)result2.getSubject().getPrincipals().iterator().next(); 
+        assertEquals(prin.getAuthorities(), prin2.getAuthorities());
+        assertEquals(prin.getProxyCount(), prin2.getProxyCount());
+        assertEquals(prin.getAudiences(), prin2.getAudiences());
     }
 
     @Test public void testNestedAuthenticationResult() throws Exception {
@@ -316,21 +318,21 @@ public class DefaultAuthenticationResultSerializerTest {
 
         final String s = serializer.serialize(result);
         final String s2 = fileToString(DATAPATH + "NestedAuthenticationResult.json");
-        Assert.assertEquals(s, s2);
+        assertEquals(s, s2);
 
         final AuthenticationResult result2 = serializer.deserialize(1, CONTEXT, KEY, s2, ACTIVITY);
 
-        Assert.assertEquals(result.getAuthenticationFlowId(), result2.getAuthenticationFlowId());
-        Assert.assertEquals(result.getAuthenticationInstant(), result2.getAuthenticationInstant());
-        Assert.assertEquals(result.getLastActivityInstant(), result2.getLastActivityInstant());
-        Assert.assertEquals(result.getSubject(), result2.getSubject());
+        assertEquals(result.getAuthenticationFlowId(), result2.getAuthenticationFlowId());
+        assertEquals(result.getAuthenticationInstant(), result2.getAuthenticationInstant());
+        assertEquals(result.getLastActivityInstant(), result2.getLastActivityInstant());
+        assertEquals(result.getSubject(), result2.getSubject());
         
         final AuthenticationResult nested2 =
                 ((AuthenticationResultPrincipal) result2.getSubject().getPrincipals().iterator().next()).getAuthenticationResult();
-        Assert.assertEquals(nested.getAuthenticationFlowId(), nested2.getAuthenticationFlowId());
-        Assert.assertEquals(nested.getAuthenticationInstant(), nested2.getAuthenticationInstant());
-        Assert.assertEquals(nested.getLastActivityInstant(), nested2.getLastActivityInstant());
-        Assert.assertEquals(nested.getSubject(), nested2.getSubject());
+        assertEquals(nested.getAuthenticationFlowId(), nested2.getAuthenticationFlowId());
+        assertEquals(nested.getAuthenticationInstant(), nested2.getAuthenticationInstant());
+        assertEquals(nested.getLastActivityInstant(), nested2.getLastActivityInstant());
+        assertEquals(nested.getSubject(), nested2.getSubject());
     }
 
     private AuthenticationResult createResult(String flowId, Subject subject) {
diff --git a/idp-authn-impl/src/test/resources/net/shibboleth/idp/authn/impl/ProxyAuthenticationResult.json b/idp-authn-impl/src/test/resources/net/shibboleth/idp/authn/impl/ProxyAuthenticationResult.json
index a2e06e3..f0b082c 100644
--- a/idp-authn-impl/src/test/resources/net/shibboleth/idp/authn/impl/ProxyAuthenticationResult.json
+++ b/idp-authn-impl/src/test/resources/net/shibboleth/idp/authn/impl/ProxyAuthenticationResult.json
@@ -1 +1 @@
-{"id":"test","ts":1378827849463,"princ":[{"AA":["foo","bar","baz"]}]}
+{"id":"test","ts":1378827849463,"princ":[{"AA":["foo","bar","baz"],"PXC":10,"AUD":["zorkmid"]}]}

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


More information about the commits mailing list