Class AddSubjectConfirmationToSubjects

All Implemented Interfaces:
Component, DestructableComponent, InitializableComponent, ProfileAction

public class AddSubjectConfirmationToSubjects extends AbstractProfileAction
Action that builds SubjectConfirmation and adds it to the Subject of all the statements in all the assertions found in a Response. The message to update is returned by a lookup strategy, by default the message returned by InOutOperationContext.getOutboundMessageContext().

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

Event:
EventIds.PROCEED_EVENT_ID, EventIds.INVALID_MSG_CTX
  • Field Details

    • log

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

      @Nonnull private final SAMLObjectBuilder<Subject> subjectBuilder
      Builder for Subject objects.
    • confirmationBuilder

      @Nonnull private final SAMLObjectBuilder<SubjectConfirmation> confirmationBuilder
      Builder for SubjectConfirmation objects.
    • confirmationMethodBuilder

      @Nonnull private final SAMLObjectBuilder<ConfirmationMethod> confirmationMethodBuilder
      Builder for ConfirmationMethod objects.
    • overwriteExisting

      private boolean overwriteExisting
      Flag controlling whether to overwrite an existing confirmation.
    • responseLookupStrategy

      @Nonnull private Function<ProfileRequestContext,Response> responseLookupStrategy
      Strategy used to locate the Response to operate on.
    • confirmationMethods

      @Nonnull @NonnullElements private Collection<String> confirmationMethods
      Methods to add.
    • response

      @Nullable private Response response
      Response to modify.
    • artifactProfile

      private boolean artifactProfile
      Flag indicating whether the outbound message is being issued via the Artifact profile.
  • Constructor Details

    • AddSubjectConfirmationToSubjects

      public AddSubjectConfirmationToSubjects()
      Constructor.
  • Method Details

    • setOverwriteExisting

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

      public void setResponseLookupStrategy(@Nonnull Function<ProfileRequestContext,Response> strategy)
      Set the strategy used to locate the Response to operate on.
      Parameters:
      strategy - strategy used to locate the Response to operate on
    • setMethods

      public void setMethods(@Nonnull @NonnullElements Collection<String> methods)
      Set the confirmation methods to use.
      Parameters:
      methods - confirmation methods 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
    • getStatementSubject

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

      @Nonnull private SubjectConfirmation cloneConfirmation(@Nonnull SubjectConfirmation confirmation)
      Create an efficient field-wise copy of a SubjectConfirmation.
      Parameters:
      confirmation - the object to clone
      Returns:
      the copy