Class AddSubjectConfirmationToSubjects
- java.lang.Object
-
- net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
-
- org.opensaml.profile.action.AbstractProfileAction
-
- org.opensaml.saml.saml2.profile.impl.AddSubjectConfirmationToSubjects
-
- All Implemented Interfaces:
Component
,DestructableComponent
,InitializableComponent
,ProfileAction
public class AddSubjectConfirmationToSubjects extends AbstractProfileAction
Action that buildsSubjectConfirmation
and adds it to theSubject
of all the assertions found in aResponse
. The message to update is returned by a lookup strategy, by default the message returned byInOutOperationContext.getOutboundMessageContext()
.No assertions will be created by this action, but if no
Subject
exists in the assertions found, it will be cretaed.An associated
SubjectConfirmationData
will be built to spec based on a set of lookup functions that optionally provide various attributes. They have appropriate defaults for the simple use case of a bearer SSO assertion but need to be overridden for other cases.
-
-
Field Summary
-
Constructor Summary
Constructors Constructor Description AddSubjectConfirmationToSubjects()
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private SubjectConfirmation
cloneConfirmation(SubjectConfirmation confirmation)
Create an efficient field-wise copy of aSubjectConfirmation
.protected void
doExecute(ProfileRequestContext profileRequestContext)
protected void
doInitialize()
protected boolean
doPreExecute(ProfileRequestContext profileRequestContext)
private Subject
getAssertionSubject(Assertion assertion)
Get the subject to which the confirmation will be added.void
setAddressLookupStrategy(Function<ProfileRequestContext,String> strategy)
Set the strategy used to obtain value forSubjectConfirmationData.getAddress()
.void
setInResponseToLookupStrategy(Function<ProfileRequestContext,String> strategy)
Set the strategy used to obtain value forSubjectConfirmationData.getInResponseTo()
.void
setLifetimeLookupStrategy(Function<ProfileRequestContext,Long> strategy)
Set the strategy used to obtain value forSubjectConfirmationData.getNotOnOrAfter()
.void
setMethod(String method)
Set the confirmation method to use.void
setOverwriteExisting(boolean flag)
Set whether to overwrite any existingSubjectConfirmation
objects found.void
setRecipientLookupStrategy(Function<ProfileRequestContext,String> strategy)
Set the strategy used to obtain value forSubjectConfirmationData.getRecipient()
.void
setResponseLookupStrategy(Function<ProfileRequestContext,Response> strategy)
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, 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 Detail
-
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.
-
confirmationDataBuilder
@Nonnull private final SAMLObjectBuilder<SubjectConfirmationData> confirmationDataBuilder
Builder for SubjectConfirmation objects.
-
overwriteExisting
private boolean overwriteExisting
Flag controlling whether to overwrite existing confirmations.
-
responseLookupStrategy
@Nonnull private Function<ProfileRequestContext,Response> responseLookupStrategy
Strategy used to locate theResponse
to operate on.
-
addressLookupStrategy
@Nullable private Function<ProfileRequestContext,String> addressLookupStrategy
Optional strategy to obtain value forSubjectConfirmationData.getAddress()
.
-
inResponseToLookupStrategy
@Nullable private Function<ProfileRequestContext,String> inResponseToLookupStrategy
Optional strategy to obtain value forSubjectConfirmationData.getInResponseTo()
.
-
recipientLookupStrategy
@Nullable private Function<ProfileRequestContext,String> recipientLookupStrategy
Optional strategy to obtain value forSubjectConfirmationData.getRecipient()
.
-
lifetimeLookupStrategy
@Nullable private Function<ProfileRequestContext,Long> lifetimeLookupStrategy
Optional strategy to obtain value forSubjectConfirmationData.getNotOnOrAfter()
.
-
confirmationMethod
@NonnullAfterInit private String confirmationMethod
Method to add.
-
response
@Nullable private Response response
Response to modify.
-
-
Method Detail
-
setOverwriteExisting
public void setOverwriteExisting(boolean flag)
Set whether to overwrite any existingSubjectConfirmation
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 theResponse
to operate on.- Parameters:
strategy
- strategy used to locate theResponse
to operate on
-
setAddressLookupStrategy
public void setAddressLookupStrategy(@Nullable Function<ProfileRequestContext,String> strategy)
Set the strategy used to obtain value forSubjectConfirmationData.getAddress()
.- Parameters:
strategy
- lookup strategy
-
setInResponseToLookupStrategy
public void setInResponseToLookupStrategy(@Nullable Function<ProfileRequestContext,String> strategy)
Set the strategy used to obtain value forSubjectConfirmationData.getInResponseTo()
.- Parameters:
strategy
- lookup strategy
-
setRecipientLookupStrategy
public void setRecipientLookupStrategy(@Nullable Function<ProfileRequestContext,String> strategy)
Set the strategy used to obtain value forSubjectConfirmationData.getRecipient()
.- Parameters:
strategy
- lookup strategy
-
setLifetimeLookupStrategy
public void setLifetimeLookupStrategy(@Nullable Function<ProfileRequestContext,Long> strategy)
Set the strategy used to obtain value forSubjectConfirmationData.getNotOnOrAfter()
.- Parameters:
strategy
- lookup strategy
-
setMethod
public void setMethod(@Nonnull @NotEmpty String method)
Set the confirmation method to use.- Parameters:
method
- confirmation method to use
-
doInitialize
protected void doInitialize() throws ComponentInitializationException
- Overrides:
doInitialize
in classAbstractInitializableComponent
- Throws:
ComponentInitializationException
-
doPreExecute
protected boolean doPreExecute(@Nonnull ProfileRequestContext profileRequestContext)
- Overrides:
doPreExecute
in classAbstractProfileAction
-
doExecute
protected void doExecute(@Nonnull ProfileRequestContext profileRequestContext)
- Overrides:
doExecute
in classAbstractProfileAction
-
getAssertionSubject
@Nonnull private Subject getAssertionSubject(@Nonnull Assertion assertion)
Get the subject to which the confirmation will be added.- Parameters:
assertion
- the assertion 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 aSubjectConfirmation
.- Parameters:
confirmation
- the object to clone- Returns:
- the copy
-
-