Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

A login flow is a subflow that is assigned a flow ID that starts with "authn/" and is further defined to the system with a bean of type net.shibboleth.idp.authn.AuthenticationFlowDescriptor in a list in conf/authn/general-authn.xml. It must generally be, further, enabled via the idp.authn.flows property.

Note

While you may deliver a custom flow in a relatively "drop-in", self-contained jar, you MAY NOT manipulate the state of the IdP at runtime to install the necessary descriptor bean because it is impossible to guarantee that your modification will take place early enough to be seen by other objects in the system. There is no publically supported mechanism to extend any of the beans defined inside the "root" web app context, and so you MUST rely on the deployer making the necessary adjustments to define custom flows to the system via the associated type of FlowDescriptor.

Internal Contract

Login flows must interact with the system by accessing and mutating the context tree in specific ways.

...

The following events worthy of special note may occur as a result of invoking the subsystem:

proceedSuccessful authentication.
RestartAuthentication3.3Authentication should be repeated from scratch (including creation of a new AuthenticationContext and related content).
NoPotentialFlowNo authentication flow is configured for use. This can also indicate that a request for passive authentication prevented use of all the possible flows.
RequestUnsupportedNo flow or active result met the requirements of a RequestedPrincipalContext.
NoCredentialsA flow was unable to extract or obtain credentials from the subject.
InvalidCredentialsA flow was unable to successfully validate credentials from the subject. Often this event and the previous event may be isolated within a flow because the subject is expected to keep trying, but there may be retry limits or other factors that will expose this condition.
SubjectCanonicalizationErrorThe Subject resulting from authentication couldn't be turned into a canonical principal name.

Various other events signifying more low-level error conditions may also occur.

...

Success may populate a SessionContext as a child of the ProfileRequestContext.