Class AddNameIdentifierToSubjects

All Implemented Interfaces:
Component, DestructableComponent, InitializableComponent, ProfileAction

public class AddNameIdentifierToSubjects extends AbstractProfileAction
Action that builds a NameIdentifier and adds it to the Subject of all the statements in all the assertions found via a lookup strategy, by default from the outbound message context.

No assertions or statements will be created by this action, but if no Subject exists in the statements found, it will be created.

The source of the NameIdentifier is one of a set of candidate SAML1NameIdentifierGenerator plugins injected into the action. The plugin(s) to attempt to use are derived from the Format value, which is established by a lookup strategy.

Event:
EventIds.PROCEED_EVENT_ID
  • Field Details

  • Constructor Details

    • AddNameIdentifierToSubjects

      public AddNameIdentifierToSubjects()
      Constructor.
  • Method Details

    • setOverwriteExisting

      public void setOverwriteExisting(boolean flag)
      Set whether to overwrite any existing NameIdentifier objects found.
      Parameters:
      flag - true iff the action should overwrite any existing objects
    • setAssertionsLookupStrategy

      public void setAssertionsLookupStrategy(@Nonnull Function<ProfileRequestContext,List<Assertion>> strategy)
      Set the strategy used to locate the Assertions to operate on.
      Parameters:
      strategy - lookup strategy
    • setFormatLookupStrategy

      public void setFormatLookupStrategy(@Nonnull Function<ProfileRequestContext,List<String>> strategy)
      Set the strategy function to use to obtain the formats to try.
      Parameters:
      strategy - format lookup strategy
    • setNameIdentifierGenerator

      public void setNameIdentifierGenerator(@Nonnull SAML1NameIdentifierGenerator theGenerator)
      Set the generator to use.
      Parameters:
      theGenerator - the generator to use
    • doInitialize

      protected void doInitialize() throws ComponentInitializationException
      Overrides:
      doInitialize in class AbstractInitializableComponent
      Throws:
      ComponentInitializationException
    • doPreExecute

      protected boolean doPreExecute(@Nonnull ProfileRequestContext profileRequestContext)
      Called prior to execution, actions may override this method to perform pre-processing for a request.

      If false is returned, execution will not proceed, and the action should attach an EventContext to the context tree to signal how to continue with overall workflow processing.

      If returning successfully, the last step should be to return the result of the superclass version of this method.

      Overrides:
      doPreExecute in class AbstractProfileAction
      Parameters:
      profileRequestContext - the current IdP profile request context
      Returns:
      true iff execution should proceed
    • doExecute

      protected void doExecute(@Nonnull ProfileRequestContext profileRequestContext)
      Performs this action. Actions must override this method to perform their work.
      Overrides:
      doExecute in class AbstractProfileAction
      Parameters:
      profileRequestContext - the current IdP profile request context
    • generateNameIdentifier

      @Nullable private NameIdentifier generateNameIdentifier(@Nonnull ProfileRequestContext profileRequestContext)
      Attempt to generate a NameIdentifier using each of the candidate Formats and plugins.
      Parameters:
      profileRequestContext - current profile request context
      Returns:
      a generated NameIdentifier or null
    • getStatementSubject

      @Nonnull private Subject getStatementSubject(@Nonnull SubjectStatement statement)
      Get the subject to which the name identifier will be added.
      Parameters:
      statement - the statement being modified
      Returns:
      the subject to which the name identifier will be added
    • cloneNameIdentifier

      @Nonnull private NameIdentifier cloneNameIdentifier(@Nonnull NameIdentifier nameIdentifier)
      Create an efficient field-wise copy of a NameIdentifier.
      Parameters:
      nameIdentifier - the object to clone
      Returns:
      the copy