log.debug("{} Filtering active results available for reuse", getLogPrefix()); final Map<String,AuthenticationResult> activeResults = authenticationContext.getActiveResults();
/** {@inheritDoc} */ @Override protected void doExecute(@Nonnull final ProfileRequestContext profileRequestContext, @Nonnull final AuthenticationContext authenticationContext) { if (canonicalPrincipalName != null) { final SubjectContext sc = profileRequestContext.getSubcontext(SubjectContext.class, true); // Check for an existing value. if (sc.getPrincipalName() != null && !canonicalPrincipalName.equals(sc.getPrincipalName())) { log.warn("{} Result of authentication ({}) does not match existing subject in context ({})", getLogPrefix(), canonicalPrincipalName, sc.getPrincipalName()); ActionSupport.buildEvent(profileRequestContext, IdPEventIds.INVALID_SUBJECT_CTX); return; } sc.setPrincipalName(canonicalPrincipalName); final Map scResults = sc.getAuthenticationResults(); scResults.putAll(authenticationContext.getActiveResults()); final AuthenticationResult latest = authenticationContext.getAuthenticationResult(); if (latest != null && !scResults.containsKey(latest.getAuthenticationFlowId())) { scResults.put(latest.getAuthenticationFlowId(), latest); } } authenticationContext.setCompletionInstant(); }
final AuthenticationContext ac = input.getSubcontext(AuthenticationContext.class); if (ac != null && ac.getAttemptedFlow() != null) { final AuthenticationResult mfaResult = ac.getActiveResults().get(ac.getAttemptedFlow().getId()); if (mfaResult != null) { if (ac.isForceAuthn()) {
log.debug("{} Forced authentication requested, selecting an inactive flow", getLogPrefix()); selectRequestedInactiveFlow(profileRequestContext, authenticationContext); } else if (authenticationContext.getActiveResults().isEmpty()) { log.debug("{} No active results available, selecting an inactive flow", getLogPrefix()); selectRequestedInactiveFlow(profileRequestContext, authenticationContext); } else { selectRequestedFlow(profileRequestContext, authenticationContext, authenticationContext.getActiveResults());
for (final AuthenticationResult activeResult : authenticationContext.getActiveResults().values()) { final AuthenticationFlowDescriptor flow = authenticationContext.getPotentialFlows().get( activeResult.getAuthenticationFlowId());
activeResult = authenticationContext.getActiveResults().get(flow.getId()); } else if (authenticationContext.getInitialAuthenticationResult() != null && authenticationContext.getInitialAuthenticationResult().getAuthenticationFlowId().equals(