Package net.shibboleth.idp.authn.impl

# Class SelectSubjectCanonicalizationFlow

java.lang.Object
net.shibboleth.shared.component.AbstractInitializableComponent
org.opensaml.profile.action.AbstractProfileAction
org.opensaml.profile.action.AbstractConditionalProfileAction
net.shibboleth.idp.profile.AbstractProfileAction
net.shibboleth.idp.authn.AbstractSubjectCanonicalizationAction
net.shibboleth.idp.authn.impl.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 Summary

Fields
Modifier and Type
Field
Description
`private final org.slf4j.Logger`
`log`
Class logger.

## Constructor Summary

Constructors
Constructor
Description
`SelectSubjectCanonicalizationFlow()`

## Method Summary

Modifier and Type
Method
Description
`protected void`
`doExecute(ProfileRequestContext profileRequestContext, SubjectCanonicalizationContext c14nContext)`
Performs this authentication action.
`protected boolean`
`doPreExecute(ProfileRequestContext profileRequestContext, SubjectCanonicalizationContext c14nContext)`
Performs this c14n action's pre-execute step.
`private SubjectCanonicalizationFlowDescriptor`
`selectUnattemptedFlow(ProfileRequestContext profileRequestContext, SubjectCanonicalizationContext c14nContext)`
Select the first potential flow not found in the intermediate flows collection, and that is applicable to the context.

### Methods inherited from class net.shibboleth.idp.authn.AbstractSubjectCanonicalizationAction

`applyTransforms, doExecute, doPreExecute, setLookupStrategy, setLowercase, setTransforms, setTrim, setUppercase`

### Methods inherited from class net.shibboleth.idp.profile.AbstractProfileAction

`doExecute, execute, getBean, getBean, getMessage, getMessage, getMessage, getParameter, getParameter, getProfileContextLookupStrategy, getRequestContext, getResult, setMessageSource, setProfileContextLookupStrategy`

### Methods inherited from class org.opensaml.profile.action.AbstractConditionalProfileAction

`getActivationCondition, setActivationCondition`

### Methods inherited from class org.opensaml.profile.action.AbstractProfileAction

`doPostExecute, doPostExecute, ensureHttpServletRequest, ensureHttpServletResponse, execute, getHttpServletRequest, getHttpServletRequestSupplier, getHttpServletResponse, getHttpServletResponseSupplier, getLogPrefix, isPreExecuteCalled, setHttpServletRequestSupplier, setHttpServletResponseSupplier`

### Methods inherited from class net.shibboleth.shared.component.AbstractInitializableComponent

`checkComponentActive, checkSetterPreconditions, destroy, doDestroy, doInitialize, ifDestroyedThrowDestroyedComponentException, ifInitializedThrowUnmodifiabledComponentException, ifNotInitializedThrowUninitializedComponentException, initialize, isDestroyed, isInitialized`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface net.shibboleth.shared.component.InitializableComponent

`initialize, isInitialized`

## 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