[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