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.

An enhancement added allows use of "inline" functional c14n implementations that don't require the sophistication of a webflow. When an inline bean is executed, its resulting events are relayed back as the result of this action in the case of EventIds.PROCEED_EVENT_ID or AuthnEventIds.INVALID_SUBJECT, or transformed into AuthnEventIds.RESELECT_FLOW for any other event.

After exhausting all options, AuthnEventIds.NO_POTENTIAL_FLOW is returned.

Event:
EventIds.PROCEED_EVENT_ID, AuthnEventIds.NO_POTENTIAL_FLOW, AuthnEventIds.RESELECT_FLOW, Selected flow ID to execute
Precondition:
ProfileRequestContext.getSubcontext(SubjectCanonicalizationContext.class) != 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