Class CopyNameIdentifierFromRequest
java.lang.Object
net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
org.opensaml.profile.action.AbstractProfileAction
org.opensaml.saml.saml1.profile.impl.CopyNameIdentifierFromRequest
- 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 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.
The source of the NameIdentifier
is a SAMLSubjectNameIdentifierContext
returned by a lookup
strategy.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final org.slf4j.Logger
Class logger.private NameIdentifier
NameIdentifier to copy.private final SAMLObjectBuilder<NameIdentifier>
Builder for NameIdentifier objects.Strategy used to locate the name identifier context to copy from.private boolean
Flag controlling whether to overwrite an existing NameIdentifier.private Response
Response to modify.private Function<ProfileRequestContext,
Response> Strategy used to locate theResponse
to operate on.private final SAMLObjectBuilder<Subject>
Builder for Subject objects. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate NameIdentifier
Create an efficient field-wise copy of aNameIdentifier
.protected void
doExecute
(ProfileRequestContext profileRequestContext) Performs this action.protected boolean
doPreExecute
(ProfileRequestContext profileRequestContext) Called prior to execution, actions may override this method to perform pre-processing for a request.private Subject
getStatementSubject
(SubjectStatement statement) Get the subject to which the name identifier will be added.void
setNameIdentifierContextLookupStrategy
(Function<ProfileRequestContext, SAMLSubjectNameIdentifierContext> strategy) Set the strategy used to locate theSAMLSubjectNameIdentifierContext
to copy from.void
setOverwriteExisting
(boolean flag) Set whether to overwrite any existingNameIdentifier
objects found.void
Set the strategy used to locate theResponse
to operate on.Methods inherited from class org.opensaml.profile.action.AbstractProfileAction
doPostExecute, doPostExecute, execute, getHttpServletRequest, getHttpServletResponse, getLogPrefix, setHttpServletRequest, setHttpServletResponse
Methods inherited from class net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
destroy, doDestroy, doInitialize, initialize, isDestroyed, isInitialized
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface net.shibboleth.utilities.java.support.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. -
nameIdentifierContextLookupStrategy
@Nonnull private Function<ProfileRequestContext,SAMLSubjectNameIdentifierContext> nameIdentifierContextLookupStrategyStrategy used to locate the name identifier context to copy from. -
responseLookupStrategy
Strategy used to locate theResponse
to operate on. -
nameIdentifier
NameIdentifier to copy. -
response
Response to modify.
-
-
Constructor Details
-
CopyNameIdentifierFromRequest
public CopyNameIdentifierFromRequest()Constructor.
-
-
Method Details
-
setOverwriteExisting
public void setOverwriteExisting(boolean flag) Set whether to overwrite any existingNameIdentifier
objects found.- Parameters:
flag
- true iff the action should overwrite any existing objects
-
setNameIdentifierContextLookupStrategy
public void setNameIdentifierContextLookupStrategy(@Nonnull Function<ProfileRequestContext, SAMLSubjectNameIdentifierContext> strategy) Set the strategy used to locate theSAMLSubjectNameIdentifierContext
to copy from.- Parameters:
strategy
- lookup strategy
-
setResponseLookupStrategy
Set the strategy used to locate theResponse
to operate on.- Parameters:
strategy
- lookup strategy
-
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
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 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:
doExecute
in classAbstractProfileAction
- Parameters:
profileRequestContext
- the current IdP profile request context
-
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
.- Returns:
- the copy
-