Class AddNameIdentifierToSubjects
java.lang.Object
net.shibboleth.shared.component.AbstractInitializableComponent
org.opensaml.profile.action.AbstractProfileAction
org.opensaml.saml.saml1.profile.impl.AddNameIdentifierToSubjects
- All Implemented Interfaces:
Component,DestructableComponent,InitializableComponent,ProfileAction
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
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate classDefault strategy for obtaining assertions to modify. -
Field Summary
FieldsModifier and TypeFieldDescriptionAssertions to modify.private Function<ProfileRequestContext,List<Assertion>> Strategy used to locate theAssertions to operate on.private Function<ProfileRequestContext,List<String>> Strategy used to determine the formats to try.Formats to try.private SAML1NameIdentifierGeneratorGenerator to use.private final org.slf4j.LoggerClass logger.private final SAMLObjectBuilder<NameIdentifier>Builder for NameIdentifier objects.private booleanFlag controlling whether to overwrite an existing NameIdentifier.private final SAMLObjectBuilder<Subject>Builder for Subject objects. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate NameIdentifiercloneNameIdentifier(NameIdentifier nameIdentifier) Create an efficient field-wise copy of aNameIdentifier.protected voiddoExecute(ProfileRequestContext profileRequestContext) Performs this action.protected voidprotected booleandoPreExecute(ProfileRequestContext profileRequestContext) Called prior to execution, actions may override this method to perform pre-processing for a request.private NameIdentifiergenerateNameIdentifier(ProfileRequestContext profileRequestContext) Attempt to generate aNameIdentifierusing each of the candidate Formats and plugins.private SubjectgetStatementSubject(SubjectStatement statement) Get the subject to which the name identifier will be added.voidSet the strategy used to locate theAssertions to operate on.voidsetFormatLookupStrategy(Function<ProfileRequestContext, List<String>> strategy) Set the strategy function to use to obtain the formats to try.voidsetNameIdentifierGenerator(SAML1NameIdentifierGenerator theGenerator) Set the generator to use.voidsetOverwriteExisting(boolean flag) Set whether to overwrite any existingNameIdentifierobjects found.Methods inherited from class org.opensaml.profile.action.AbstractProfileAction
doPostExecute, doPostExecute, ensureHttpServletRequest, ensureHttpServletResponse, execute, getHttpServletRequest, getHttpServletRequestSupplier, getHttpServletResponse, getHttpServletResponseSupplier, getLogPrefix, isPreExecuteCalled, setHttpServletRequestSupplier, setHttpServletResponseSupplierMethods inherited from class net.shibboleth.shared.component.AbstractInitializableComponent
checkComponentActive, checkSetterPreconditions, destroy, doDestroy, ifDestroyedThrowDestroyedComponentException, ifInitializedThrowUnmodifiabledComponentException, ifNotInitializedThrowUninitializedComponentException, initialize, isDestroyed, isInitializedMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface net.shibboleth.shared.component.InitializableComponent
initialize, isInitialized
-
Field Details
-
log
@Nonnull private final org.slf4j.Logger logClass logger. -
subjectBuilder
Builder for Subject objects. -
nameIdentifierBuilder
Builder for NameIdentifier objects. -
overwriteExisting
private boolean overwriteExistingFlag controlling whether to overwrite an existing NameIdentifier. -
assertionsLookupStrategy
Strategy used to locate theAssertions to operate on. -
formatLookupStrategy
Strategy used to determine the formats to try. -
generator
Generator to use. -
formats
Formats to try. -
assertions
Assertions to modify.
-
-
Constructor Details
-
AddNameIdentifierToSubjects
public AddNameIdentifierToSubjects()Constructor.
-
-
Method Details
-
setOverwriteExisting
public void setOverwriteExisting(boolean flag) Set whether to overwrite any existingNameIdentifierobjects 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 theAssertions to operate on.- Parameters:
strategy- lookup strategy
-
setFormatLookupStrategy
Set the strategy function to use to obtain the formats to try.- Parameters:
strategy- format lookup strategy
-
setNameIdentifierGenerator
Set the generator to use.- Parameters:
theGenerator- the generator to use
-
doInitialize
- Overrides:
doInitializein classAbstractInitializableComponent- Throws:
ComponentInitializationException
-
doPreExecute
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
EventContextto 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:
doPreExecutein classAbstractProfileAction- Parameters:
profileRequestContext- the current IdP profile request context- Returns:
- true iff execution should proceed
-
doExecute
Performs this action. Actions must override this method to perform their work.- Overrides:
doExecutein classAbstractProfileAction- Parameters:
profileRequestContext- the current IdP profile request context
-
generateNameIdentifier
@Nullable private NameIdentifier generateNameIdentifier(@Nonnull ProfileRequestContext profileRequestContext) Attempt to generate aNameIdentifierusing each of the candidate Formats and plugins.- Parameters:
profileRequestContext- current profile request context- Returns:
- a generated
NameIdentifieror null
-
getStatementSubject
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
Create an efficient field-wise copy of aNameIdentifier.- Parameters:
nameIdentifier- the object to clone- Returns:
- the copy
-