Class AbstractNameIdentifierGenerator<NameIdType extends SAMLObject>

Type Parameters:
NameIdType - type of object produced
All Implemented Interfaces:
Predicate<ProfileRequestContext>, Component, DestructableComponent, IdentifiableComponent, IdentifiedComponent, InitializableComponent, FormatSpecificNameIdentifierGenerator<NameIdType>, NameIdentifierGenerator<NameIdType>
Direct Known Subclasses:
AbstractSAML1NameIdentifierGenerator, AbstractSAML2NameIDGenerator

public abstract class AbstractNameIdentifierGenerator<NameIdType extends SAMLObject> extends AbstractIdentifiableInitializableComponent implements FormatSpecificNameIdentifierGenerator<NameIdType>, Predicate<ProfileRequestContext>
Abstract base class for simple implementations of NameIdentifierGenerator.

This class is suitable for implementing generators that produce simple kinds of identifiers. It supports various options controlling the inclusion of qualifier attributes.

Subclasses must override one of doGenerate(ProfileRequestContext) or getIdentifier(ProfileRequestContext).

  • Field Details

    • activationCondition

      @Nonnull private Predicate<ProfileRequestContext> activationCondition
      A predicate indicating whether the component applies to a request.
    • defaultIdPNameQualifierLookupStrategy

      @Nullable private Function<ProfileRequestContext,String> defaultIdPNameQualifierLookupStrategy
      Optional lookup function for obtaining default NameQualifier.
    • defaultSPNameQualifierLookupStrategy

      @Nullable private Function<ProfileRequestContext,String> defaultSPNameQualifierLookupStrategy
      Optional lookup function for obtaining default SPNameQualifier.
    • omitQualifiers

      private boolean omitQualifiers
      Flag allowing qualifier(s) to be omitted when they would match defaults or are not set.
    • format

      The identifier Format supported.
    • idpNameQualifier

      @Nullable private String idpNameQualifier
      Explicit NameQualifier, if any.
    • spNameQualifier

      @Nullable private String spNameQualifier
      Explicit SPNameQualifier, if any.
    • spProvidedId

      @Nullable private String spProvidedId
      SPProvidedID, if any.
  • Constructor Details

    • AbstractNameIdentifierGenerator

      protected AbstractNameIdentifierGenerator()
      Constructor.
  • Method Details

    • setActivationCondition

      public void setActivationCondition(@Nonnull Predicate<ProfileRequestContext> condition)
      Set an activation condition that determines whether to run or not.
      Parameters:
      condition - an activation condition
    • getDefaultIdPNameQualifierLookupStrategy

      @Nullable public Function<ProfileRequestContext,String> getDefaultIdPNameQualifierLookupStrategy()
      Get the lookup strategy to obtain the default IdP NameQualifier.
      Returns:
      lookup strategy
    • setDefaultIdPNameQualifierLookupStrategy

      public void setDefaultIdPNameQualifierLookupStrategy(@Nullable Function<ProfileRequestContext,String> strategy)
      Set the lookup strategy to obtain the default IdP NameQualifier.
      Parameters:
      strategy - lookup strategy
    • getDefaultSPNameQualifierLookupStrategy

      @Nullable public Function<ProfileRequestContext,String> getDefaultSPNameQualifierLookupStrategy()
      Get the lookup strategy to obtain the default SPNameQualifier.
      Returns:
      lookup strategy
    • setDefaultSPNameQualifierLookupStrategy

      public void setDefaultSPNameQualifierLookupStrategy(@Nullable Function<ProfileRequestContext,String> strategy)
      Set the lookup strategy to obtain the default SPNameQualifier.
      Parameters:
      strategy - lookup strategy
    • isOmitQualifiers

      public boolean isOmitQualifiers()
      Get whether to omit NameQualifier/SPNameQualifier attributes if the qualifiers are not explicitly set or are set to values matching the IdP and relying party names respectively.
      Returns:
      whether to omit qualifiers
    • setOmitQualifiers

      public void setOmitQualifiers(boolean flag)
      Set whether to omit NameQualifier/SPNameQualifier attributes if the qualifiers are not explicitly set or are set to values matching the IdP and relying party names respectively.
      Parameters:
      flag - flag to set
    • getFormat

      @NonnullAfterInit @NotEmpty public String getFormat()
      Get the identifier format associated with this component.
      Specified by:
      getFormat in interface FormatSpecificNameIdentifierGenerator<NameIdType extends SAMLObject>
      Returns:
      identifier format
    • setFormat

      public void setFormat(@Nonnull @NotEmpty String f)
      Set the Format attribute supported.
      Parameters:
      f - format to set
    • getIdPNameQualifier

      @Nullable public String getIdPNameQualifier()
      Get the NameQualifier attribute.
      Returns:
      the qualifier attribute
    • setIdPNameQualifier

      public void setIdPNameQualifier(@Nullable String qualifier)
      Set the NameQualifier attribute.

      If not set, and isOmitQualifiers() is false, then the value used will be derived from the IdP identity.

      Parameters:
      qualifier - qualifier to set
    • getSPNameQualifier

      @Nullable public String getSPNameQualifier()
      Get the SPNameQualifier attribute.
      Returns:
      the qualifier attribute
    • setSPNameQualifier

      public void setSPNameQualifier(@Nullable String qualifier)
      Set the SPNameQualifier attribute.

      If not set, and isOmitQualifiers() is false, then the value used will be derived from the relying party identity.

      Parameters:
      qualifier - qualifier to set
    • getSPProvidedID

      @Nullable public String getSPProvidedID()
      Get the SPProvidedID attribute.
      Returns:
      the secondary ID attribute
    • setSPProvidedId

      public void setSPProvidedId(@Nullable String id)
      Set the SPProvidedID attribute.
      Parameters:
      id - value to set
    • doInitialize

      protected void doInitialize() throws ComponentInitializationException
      Overrides:
      doInitialize in class AbstractIdentifiedInitializableComponent
      Throws:
      ComponentInitializationException
    • test

      public boolean test(@Nullable ProfileRequestContext input)
      Specified by:
      test in interface Predicate<NameIdType extends SAMLObject>
    • generate

      @Nullable public NameIdType generate(@Nonnull ProfileRequestContext profileRequestContext, @Nonnull @NotEmpty String theFormat) throws SAMLException
      Generate an identifier object.
      Specified by:
      generate in interface NameIdentifierGenerator<NameIdType extends SAMLObject>
      Parameters:
      profileRequestContext - the current profile request context
      theFormat - the identifier format to generate
      Returns:
      the identifier object, or null
      Throws:
      SAMLException - if an error occurs generating an identifier
    • doGenerate

      @Nullable protected abstract NameIdType doGenerate(@Nonnull ProfileRequestContext profileRequestContext) throws SAMLException
      Override this method to fully control the generation process.
      Parameters:
      profileRequestContext - current profile request context
      Returns:
      the generated object
      Throws:
      SAMLException - if an error occurs
    • getIdentifier

      @Nullable protected String getIdentifier(@Nonnull ProfileRequestContext profileRequestContext) throws SAMLException
      Override this method to reuse this implementation of doGenerate(ProfileRequestContext), and return the identifier to be included as the value of the eventual element.
      Parameters:
      profileRequestContext - current profile request context
      Returns:
      the generated identifier
      Throws:
      SAMLException - if an error occurs
    • getEffectiveIdPNameQualifier

      @Nullable protected String getEffectiveIdPNameQualifier(@Nonnull ProfileRequestContext profileRequestContext)
      Get the effective NameQualifier to apply based on the properties set and the current request.
      Parameters:
      profileRequestContext - current profile context
      Returns:
      the effective NameQualifier to set, or null
    • getEffectiveSPNameQualifier

      @Nullable protected String getEffectiveSPNameQualifier(@Nonnull ProfileRequestContext profileRequestContext)
      Get the effective SPNameQualifier to apply based on the properties set and the current request.
      Parameters:
      profileRequestContext - current profile context
      Returns:
      the effective NameQualifier to set, or null