Class SelectSubjectCanonicalizationFlow

All Implemented Interfaces:
Component, DestructableComponent, InitializableComponent, ProfileAction, Aware, MessageSource, MessageSourceAware, Action

public class SelectSubjectCanonicalizationFlow
extends AbstractSubjectCanonicalizationAction
A canonicalization action that selects a canonicalization flow to invoke.

This is the heart of the c14n processing sequence, and runs after the SubjectCanonicalizationContext has been fully populated. It uses the potential flows, and their associated activation conditions to decide how to proceed.

This is a rare case in that the standard default event, EventIds.PROCEED_EVENT_ID, cannot be returned, because the action must either dispatch to a flow by name, or signal an error.

Event:
AuthnEventIds.NO_POTENTIAL_FLOW, Selected flow ID to execute
Precondition:
ProfileRequestContext.getSubcontext(SubjectCanonicalizationContext.class, false) != null
  • Field Details

    • log

      @Nonnull private final org.slf4j.Logger log
      Class logger.
  • Constructor Details

    • SelectSubjectCanonicalizationFlow

      public SelectSubjectCanonicalizationFlow()
  • Method Details

    • doPreExecute

      protected boolean doPreExecute​(@Nonnull ProfileRequestContext profileRequestContext, @Nonnull SubjectCanonicalizationContext c14nContext)
      Performs this c14n action's pre-execute step. Default implementation just returns true iff a subject is set.
      Overrides:
      doPreExecute in class AbstractSubjectCanonicalizationAction
      Parameters:
      profileRequestContext - the current IdP profile request context
      c14nContext - the current subject canonicalization context
      Returns:
      true iff execution should continue
    • doExecute

      protected void doExecute​(@Nonnull ProfileRequestContext profileRequestContext, @Nonnull SubjectCanonicalizationContext c14nContext)
      Performs this authentication action. Default implementation throws an exception.
      Overrides:
      doExecute in class AbstractSubjectCanonicalizationAction
      Parameters:
      profileRequestContext - the current IdP profile request context
      c14nContext - the current subject canonicalization context
    • selectUnattemptedFlow

      @Nullable private SubjectCanonicalizationFlowDescriptor selectUnattemptedFlow​(@Nonnull ProfileRequestContext profileRequestContext, @Nonnull SubjectCanonicalizationContext c14nContext)
      Select the first potential flow not found in the intermediate flows collection, and that is applicable to the context.
      Parameters:
      profileRequestContext - the current IdP profile request context
      c14nContext - the current c14n context
      Returns:
      an eligible flow, or null