[java-identity-provider] branch master updated: IDP-1605 - AuthenticationResult reuseCondition not re-populated
Scott Cantor
cantor.2 at osu.edu
Mon May 18 23:10:50 UTC 2020
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=97249ab412827e88f2bce7e5b3bae7848295c83e
The following commit(s) were added to refs/heads/master by this push:
new 97249ab41 IDP-1605 - AuthenticationResult reuseCondition not re-populated
97249ab41 is described below
commit 97249ab412827e88f2bce7e5b3bae7848295c83e
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Mon May 18 19:09:43 2020 -0400
IDP-1605 - AuthenticationResult reuseCondition not re-populated
https://issues.shibboleth.net/jira/browse/IDP-1605
---
.../idp/authn/AuthenticationFlowDescriptor.java | 13 +-
.../shibboleth/idp/authn/AuthenticationResult.java | 29 +++-
.../DefaultAuthenticationResultSerializerTest.java | 170 +++++++++++++++++----
3 files changed, 178 insertions(+), 34 deletions(-)
diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AuthenticationFlowDescriptor.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AuthenticationFlowDescriptor.java
index 936b36875..238037951 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AuthenticationFlowDescriptor.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AuthenticationFlowDescriptor.java
@@ -256,11 +256,22 @@ public class AuthenticationFlowDescriptor extends AbstractIdentifiableInitializa
public void setDiscoveryRequired(final boolean flag) {
discoveryRequired = flag;
}
+
+ /**
+ * Get condition controlling whether results from this flow should be reused for SSO.
+ *
+ * @return condition
+ *
+ * @since 4.0.1
+ */
+ @Nonnull public Predicate<ProfileRequestContext> getReuseCondition() {
+ return reuseCondition;
+ }
/**
* Set condition controlling whether results from this flow should be reused for SSO.
*
- * <p>Defaults to {@link Predicates#alwaysTrue()}.</p>
+ * <p>Defaults to {@link ProxyCountPredicate}.</p>
*
* @param condition condition to set
*
diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AuthenticationResult.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AuthenticationResult.java
index 0f97e3d96..dd9809adc 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AuthenticationResult.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AuthenticationResult.java
@@ -32,6 +32,7 @@ import javax.security.auth.Subject;
import org.opensaml.profile.context.ProfileRequestContext;
+import net.shibboleth.idp.authn.context.AuthenticationContext;
import net.shibboleth.idp.authn.principal.PrincipalSupportingComponent;
import net.shibboleth.idp.authn.principal.ProxyAuthenticationPrincipal;
import net.shibboleth.idp.authn.principal.UsernamePrincipal;
@@ -41,6 +42,7 @@ import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.utilities.java.support.logic.PredicateSupport;
import net.shibboleth.utilities.java.support.primitive.StringSupport;
import com.google.common.base.MoreObjects;
@@ -94,7 +96,7 @@ public class AuthenticationResult implements PrincipalSupportingComponent {
authenticationInstant = Instant.now();
lastActivityInstant = authenticationInstant;
additionalData = new HashMap<>();
- reuseCondition = Predicates.alwaysTrue();
+ reuseCondition = new DescriptorReusePredicate();
}
/**
@@ -316,4 +318,29 @@ public class AuthenticationResult implements PrincipalSupportingComponent {
}
}
+ /**
+ * Inner class that delegates reuse condition evaluation to the underlying {@link AuthenticationFlowDescriptor}.
+ */
+ class DescriptorReusePredicate extends ProxyRestrictionReusePredicate {
+
+ /** {@inheritDoc} */
+ public boolean test(@Nullable final ProfileRequestContext input) {
+ if (input != null) {
+ final AuthenticationContext ac = input.getSubcontext(AuthenticationContext.class);
+ if (ac != null) {
+ final AuthenticationFlowDescriptor flow = ac.getAvailableFlows().get(authenticationFlowId);
+ if (flow != null) {
+ if (flow.getReuseCondition().test(input)) {
+ if (flow.isProxyRestrictionsEnforced()) {
+ return super.test(input);
+ }
+ }
+ }
+ }
+ }
+
+ return false;
+ }
+
+ }
}
\ No newline at end of file
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 9bf64ee0f..a0bf4d3fb 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
@@ -34,7 +34,9 @@ import net.shibboleth.idp.attribute.EmptyAttributeValue;
import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.ScopedStringAttributeValue;
import net.shibboleth.idp.attribute.StringAttributeValue;
+import net.shibboleth.idp.authn.AuthenticationFlowDescriptor;
import net.shibboleth.idp.authn.AuthenticationResult;
+import net.shibboleth.idp.authn.context.AuthenticationContext;
import net.shibboleth.idp.authn.principal.AuthenticationResultPrincipal;
import net.shibboleth.idp.authn.principal.IdPAttributePrincipal;
import net.shibboleth.idp.authn.principal.PasswordPrincipal;
@@ -54,10 +56,14 @@ import org.ldaptive.LdapAttribute;
import org.ldaptive.LdapEntry;
import org.ldaptive.SortBehavior;
import org.ldaptive.jaas.LdapPrincipal;
+import org.opensaml.profile.RequestContextBuilder;
+import org.opensaml.profile.context.ProfileRequestContext;
import org.springframework.core.io.ClassPathResource;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
+import com.google.common.base.Predicates;
+
/** {@link DefaultAuthenticationResultSerializer} unit test. */
public class DefaultAuthenticationResultSerializerTest {
@@ -73,8 +79,14 @@ public class DefaultAuthenticationResultSerializerTest {
private DefaultAuthenticationResultSerializer serializer;
- @BeforeMethod public void setUp() {
+ private AuthenticationFlowDescriptor flowDescriptor;
+
+ @BeforeMethod public void setUp() throws ComponentInitializationException {
serializer = new DefaultAuthenticationResultSerializer();
+ flowDescriptor = new AuthenticationFlowDescriptor();
+ flowDescriptor.setId("test");
+ flowDescriptor.setResultSerializer(serializer);
+ flowDescriptor.setReuseCondition(Predicates.alwaysTrue());
}
@Test public void testInvalid() throws Exception {
@@ -110,43 +122,62 @@ public class DefaultAuthenticationResultSerializerTest {
@Test public void testSimple() throws Exception {
serializer.initialize();
+ flowDescriptor.initialize();
- final AuthenticationResult result = createResult("test", new Subject());
+ final AuthenticationResult result = createResult(flowDescriptor, new Subject());
result.getAdditionalData().put("foo", "bar");
result.getAdditionalData().put("frobnitz", "zorkmid");
result.getSubject().getPrincipals().add(new UsernamePrincipal("bob"));
- serializer.serialize(result);
+ final ProfileRequestContext prc = getProfileRequestContext(Collections.singletonList(flowDescriptor));
+ assertTrue(result.getReuseCondition().test(prc));
+
+ flowDescriptor.serialize(result);
final String s2 = fileToString(DATAPATH + "simpleAuthenticationResult.json");
// assertEquals(s, s2);
- final AuthenticationResult result2 = serializer.deserialize(1, CONTEXT, KEY, s2, ACTIVITY);
+ final AuthenticationResult result2 = flowDescriptor.deserialize(1, CONTEXT, KEY, s2,
+ Instant.ofEpochMilli(ACTIVITY)
+ .plus(flowDescriptor.getInactivityTimeout())
+ .plus(AuthenticationFlowDescriptor.STORAGE_EXPIRATION_OFFSET)
+ .toEpochMilli());
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());
+ assertTrue(result2.getReuseCondition().test(prc));
}
@Test public void testComplex() throws Exception {
serializer.initialize();
+ flowDescriptor.initialize();
- AuthenticationResult result = createResult("test", new Subject());
+ final AuthenticationResult result = createResult(flowDescriptor, new Subject());
result.getSubject().getPrincipals().add(new UsernamePrincipal("bob"));
result.getSubject().getPrincipals().add(new TestPrincipal("foo"));
result.getSubject().getPrincipals().add(new TestPrincipal("bar"));
- String s = serializer.serialize(result);
- String s2 = fileToString(DATAPATH + "complexAuthenticationResult.json");
+ final String s = flowDescriptor.serialize(result);
+ final String s2 = fileToString(DATAPATH + "complexAuthenticationResult.json");
assertEquals(s, s2);
-
- AuthenticationResult result2 = serializer.deserialize(1, CONTEXT, KEY, s2, ACTIVITY);
+
+ final ProfileRequestContext prc = getProfileRequestContext(Collections.singletonList(flowDescriptor));
+ assertTrue(result.getReuseCondition().test(prc));
+
+ final AuthenticationResult result2 = flowDescriptor.deserialize(1, CONTEXT, KEY, s2,
+ Instant.ofEpochMilli(ACTIVITY)
+ .plus(flowDescriptor.getInactivityTimeout())
+ .plus(AuthenticationFlowDescriptor.STORAGE_EXPIRATION_OFFSET)
+ .toEpochMilli());
+
assertEquals(result.getAuthenticationFlowId(), result2.getAuthenticationFlowId());
assertEquals(result.getAuthenticationInstant(), result2.getAuthenticationInstant());
assertEquals(result.getLastActivityInstant(), result2.getLastActivityInstant());
assertEquals(result.getSubject(), result2.getSubject());
+ assertTrue(result2.getReuseCondition().test(prc));
}
@Test public void testCreds() throws Exception {
@@ -176,39 +207,59 @@ public class DefaultAuthenticationResultSerializerTest {
serializer.setPrincipalSerializers(Collections.singletonList(pwSerializer));
serializer.initialize();
- final AuthenticationResult result = createResult("test", new Subject());
+ flowDescriptor.initialize();
+
+ final AuthenticationResult result = createResult(flowDescriptor, new Subject());
result.getSubject().getPrincipals().add(new UsernamePrincipal("bob"));
result.getSubject().getPrivateCredentials().add(new PasswordPrincipal("bar"));
-
- final String s = serializer.serialize(result);
-
- final AuthenticationResult result2 = serializer.deserialize(1, CONTEXT, KEY, s, ACTIVITY);
+
+ final ProfileRequestContext prc = getProfileRequestContext(Collections.singletonList(flowDescriptor));
+ assertTrue(result.getReuseCondition().test(prc));
+
+ final String s = flowDescriptor.serialize(result);
+
+ final AuthenticationResult result2 = flowDescriptor.deserialize(1, CONTEXT, KEY, s,
+ Instant.ofEpochMilli(ACTIVITY)
+ .plus(flowDescriptor.getInactivityTimeout())
+ .plus(AuthenticationFlowDescriptor.STORAGE_EXPIRATION_OFFSET)
+ .toEpochMilli());
assertEquals(result.getAuthenticationFlowId(), result2.getAuthenticationFlowId());
assertEquals(result.getAuthenticationInstant(), result2.getAuthenticationInstant());
assertEquals(result.getLastActivityInstant(), result2.getLastActivityInstant());
assertEquals(result.getSubject(), result2.getSubject());
+ assertTrue(result2.getReuseCondition().test(prc));
}
@Test public void testSymbolic() throws Exception {
serializer.getGenericPrincipalSerializer().setSymbolics(Collections.singletonMap(TestPrincipal.class.getName(), 1));
serializer.initialize();
+ flowDescriptor.initialize();
- final AuthenticationResult result = createResult("test", new Subject());
+ final AuthenticationResult result = createResult(flowDescriptor, new Subject());
result.getSubject().getPrincipals().add(new UsernamePrincipal("bob"));
result.getSubject().getPrincipals().add(new TestPrincipal("foo"));
result.getSubject().getPrincipals().add(new TestPrincipal("bar"));
- final String s = serializer.serialize(result);
+ final ProfileRequestContext prc = getProfileRequestContext(Collections.singletonList(flowDescriptor));
+ assertTrue(result.getReuseCondition().test(prc));
+
+ final String s = flowDescriptor.serialize(result);
final String s2 = fileToString(DATAPATH + "symbolicAuthenticationResult.json");
assertEquals(s, s2);
- final AuthenticationResult result2 = serializer.deserialize(1, CONTEXT, KEY, s2, ACTIVITY);
+ final AuthenticationResult result2 = flowDescriptor.deserialize(1, CONTEXT, KEY, s2,
+ Instant.ofEpochMilli(ACTIVITY)
+ .plus(flowDescriptor.getInactivityTimeout())
+ .plus(AuthenticationFlowDescriptor.STORAGE_EXPIRATION_OFFSET)
+ .toEpochMilli());
+
assertEquals(result.getAuthenticationFlowId(), result2.getAuthenticationFlowId());
assertEquals(result.getAuthenticationInstant(), result2.getAuthenticationInstant());
assertEquals(result.getLastActivityInstant(), result2.getLastActivityInstant());
assertEquals(result.getSubject(), result2.getSubject());
+ assertTrue(result2.getReuseCondition().test(prc));
}
@@ -216,8 +267,9 @@ public class DefaultAuthenticationResultSerializerTest {
final LDAPPrincipalSerializer lpSerializer = new LDAPPrincipalSerializer();
serializer.setPrincipalSerializers(Collections.singletonList(lpSerializer));
serializer.initialize();
+ flowDescriptor.initialize();
- final AuthenticationResult result = createResult("test", new Subject());
+ final AuthenticationResult result = createResult(flowDescriptor, new Subject());
final LdapEntry entry = new LdapEntry(SortBehavior.SORTED);
entry.setDn("uid=1234,ou=people,dc=shibboleth,dc=net");
final LdapAttribute givenName = new LdapAttribute(SortBehavior.SORTED);
@@ -230,11 +282,18 @@ public class DefaultAuthenticationResultSerializerTest {
new LdapAttribute("mail", "bob at shibboleth.net"));
result.getSubject().getPrincipals().add(new LdapPrincipal("bob", entry));
- final String s = serializer.serialize(result);
+ final ProfileRequestContext prc = getProfileRequestContext(Collections.singletonList(flowDescriptor));
+ assertTrue(result.getReuseCondition().test(prc));
+
+ final String s = flowDescriptor.serialize(result);
final String s2 = fileToString(DATAPATH + "LDAPAuthenticationResult.json");
assertEquals(s, s2);
- final AuthenticationResult result2 = serializer.deserialize(1, CONTEXT, KEY, s2, ACTIVITY);
+ final AuthenticationResult result2 = flowDescriptor.deserialize(1, CONTEXT, KEY, s2,
+ Instant.ofEpochMilli(ACTIVITY)
+ .plus(flowDescriptor.getInactivityTimeout())
+ .plus(AuthenticationFlowDescriptor.STORAGE_EXPIRATION_OFFSET)
+ .toEpochMilli());
assertEquals(result.getAuthenticationFlowId(), result2.getAuthenticationFlowId());
assertEquals(result.getAuthenticationInstant(), result2.getAuthenticationInstant());
@@ -243,14 +302,16 @@ public class DefaultAuthenticationResultSerializerTest {
assertEquals(
((LdapPrincipal) result.getSubject().getPrincipals().iterator().next()).getLdapEntry(),
((LdapPrincipal) result2.getSubject().getPrincipals().iterator().next()).getLdapEntry());
+ assertTrue(result2.getReuseCondition().test(prc));
}
@Test public void testIdPAttribute() throws Exception {
final IdPAttributePrincipalSerializer attrSerializer = new IdPAttributePrincipalSerializer();
serializer.setPrincipalSerializers(Collections.singletonList(attrSerializer));
serializer.initialize();
+ flowDescriptor.initialize();
- final AuthenticationResult result = createResult("test", new Subject());
+ final AuthenticationResult result = createResult(flowDescriptor, new Subject());
final IdPAttributePrincipal prin = new IdPAttributePrincipal(new IdPAttribute("foo"));
prin.getAttribute().setValues(List.of(new StringAttributeValue("bar"),
new ScopedStringAttributeValue("bar2", "scope"), EmptyAttributeValue.ZERO_LENGTH,
@@ -258,16 +319,25 @@ public class DefaultAuthenticationResultSerializerTest {
result.getSubject().getPrincipals().add(prin);
- final String s = serializer.serialize(result);
+ final ProfileRequestContext prc = getProfileRequestContext(Collections.singletonList(flowDescriptor));
+ assertTrue(result.getReuseCondition().test(prc));
+
+ final String s = flowDescriptor.serialize(result);
final String s2 = fileToString(DATAPATH + "IdPAttributeAuthenticationResult.json");
assertEquals(s, s2);
- final AuthenticationResult result2 = serializer.deserialize(1, CONTEXT, KEY, s2, ACTIVITY);
+ final AuthenticationResult result2 = flowDescriptor.deserialize(1, CONTEXT, KEY, s2,
+ Instant.ofEpochMilli(ACTIVITY)
+ .plus(flowDescriptor.getInactivityTimeout())
+ .plus(AuthenticationFlowDescriptor.STORAGE_EXPIRATION_OFFSET)
+ .toEpochMilli());
+
assertEquals(result.getAuthenticationFlowId(), result2.getAuthenticationFlowId());
assertEquals(result.getAuthenticationInstant(), result2.getAuthenticationInstant());
assertEquals(result.getLastActivityInstant(), result2.getLastActivityInstant());
assertEquals(result.getSubject(), result2.getSubject());
+ assertTrue(result2.getReuseCondition().test(prc));
final IdPAttribute attribute =
((IdPAttributePrincipal) result2.getSubject().getPrincipals().iterator().next()).getAttribute();
@@ -282,50 +352,76 @@ public class DefaultAuthenticationResultSerializerTest {
final ProxyAuthenticationPrincipalSerializer proxySerializer = new ProxyAuthenticationPrincipalSerializer();
serializer.setPrincipalSerializers(Collections.singletonList(proxySerializer));
serializer.initialize();
+ flowDescriptor.initialize();
- final AuthenticationResult result = createResult("test", new Subject());
+ final AuthenticationResult result = createResult(flowDescriptor, new Subject());
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 ProfileRequestContext prc = getProfileRequestContext(Collections.singletonList(flowDescriptor));
+ assertTrue(result.getReuseCondition().test(prc));
+
+ final String s = flowDescriptor.serialize(result);
final String s2 = fileToString(DATAPATH + "ProxyAuthenticationResult.json");
assertEquals(s, s2);
- final AuthenticationResult result2 = serializer.deserialize(1, CONTEXT, KEY, s2, ACTIVITY);
+ final AuthenticationResult result2 = flowDescriptor.deserialize(1, CONTEXT, KEY, s2,
+ Instant.ofEpochMilli(ACTIVITY)
+ .plus(flowDescriptor.getInactivityTimeout())
+ .plus(AuthenticationFlowDescriptor.STORAGE_EXPIRATION_OFFSET)
+ .toEpochMilli());
+
assertEquals(result.getAuthenticationFlowId(), result2.getAuthenticationFlowId());
assertEquals(result.getAuthenticationInstant(), result2.getAuthenticationInstant());
assertEquals(result.getLastActivityInstant(), result2.getLastActivityInstant());
assertEquals(result.getSubject(), result2.getSubject());
+ assertTrue(result2.getReuseCondition().test(prc));
final ProxyAuthenticationPrincipal prin2 = (ProxyAuthenticationPrincipal)result2.getSubject().getPrincipals().iterator().next();
assertEquals(prin.getAuthorities(), prin2.getAuthorities());
assertEquals(prin.getProxyCount(), prin2.getProxyCount());
assertEquals(prin.getAudiences(), prin2.getAudiences());
+ assertTrue(result2.getReuseCondition().test(prc));
}
@Test public void testNestedAuthenticationResult() throws Exception {
serializer.initialize();
+ flowDescriptor.initialize();
+
+ final AuthenticationResult result = createResult(flowDescriptor, new Subject());
- final AuthenticationResult result = createResult("test", new Subject());
- final AuthenticationResult nested = createResult("nested", new Subject());
+ final AuthenticationFlowDescriptor nestedDescriptor = new AuthenticationFlowDescriptor();
+ nestedDescriptor.setId("nested");
+ nestedDescriptor.setResultSerializer(serializer);
+ nestedDescriptor.initialize();
+
+ final AuthenticationResult nested = createResult(nestedDescriptor, new Subject());
nested.setLastActivityInstant(INSTANT);
nested.getSubject().getPrincipals().add(new UsernamePrincipal("bob"));
result.getSubject().getPrincipals().add(new AuthenticationResultPrincipal(nested));
- final String s = serializer.serialize(result);
+ final ProfileRequestContext prc = getProfileRequestContext(List.of(flowDescriptor, nestedDescriptor));
+ assertTrue(result.getReuseCondition().test(prc));
+
+ final String s = flowDescriptor.serialize(result);
final String s2 = fileToString(DATAPATH + "NestedAuthenticationResult.json");
assertEquals(s, s2);
- final AuthenticationResult result2 = serializer.deserialize(1, CONTEXT, KEY, s2, ACTIVITY);
+ final AuthenticationResult result2 = flowDescriptor.deserialize(1, CONTEXT, KEY, s2,
+ Instant.ofEpochMilli(ACTIVITY)
+ .plus(flowDescriptor.getInactivityTimeout())
+ .plus(AuthenticationFlowDescriptor.STORAGE_EXPIRATION_OFFSET)
+ .toEpochMilli());
assertEquals(result.getAuthenticationFlowId(), result2.getAuthenticationFlowId());
assertEquals(result.getAuthenticationInstant(), result2.getAuthenticationInstant());
assertEquals(result.getLastActivityInstant(), result2.getLastActivityInstant());
assertEquals(result.getSubject(), result2.getSubject());
+ assertTrue(result2.getReuseCondition().test(prc));
final AuthenticationResult nested2 =
((AuthenticationResultPrincipal) result2.getSubject().getPrincipals().iterator().next()).getAuthenticationResult();
@@ -333,15 +429,25 @@ public class DefaultAuthenticationResultSerializerTest {
assertEquals(nested.getAuthenticationInstant(), nested2.getAuthenticationInstant());
assertEquals(nested.getLastActivityInstant(), nested2.getLastActivityInstant());
assertEquals(nested.getSubject(), nested2.getSubject());
+ assertTrue(nested2.getReuseCondition().test(prc));
}
- private AuthenticationResult createResult(String flowId, Subject subject) {
- final AuthenticationResult result = new AuthenticationResult(flowId, subject);
+ private AuthenticationResult createResult(AuthenticationFlowDescriptor flow, Subject subject) {
+ final AuthenticationResult result = flow.newAuthenticationResult(subject);
result.setAuthenticationInstant(INSTANT);
result.setLastActivityInstant(Instant.ofEpochMilli(ACTIVITY));
return result;
}
+ private ProfileRequestContext getProfileRequestContext(final List<AuthenticationFlowDescriptor> flows) {
+ final ProfileRequestContext prc = new RequestContextBuilder().buildProfileRequestContext();
+ final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class, true);
+ for (final AuthenticationFlowDescriptor flow : flows) {
+ ac.getAvailableFlows().put(flow.getId(), flow);
+ }
+ return prc;
+ }
+
private String fileToString(String pathname) throws URISyntaxException, IOException {
try (final FileInputStream stream = new FileInputStream(
new File(DefaultAuthenticationResultSerializerTest.class.getResource(pathname).toURI()))) {
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list