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:
net.shibboleth.utilities.java.support.component.Component,net.shibboleth.utilities.java.support.component.DestructableComponent,net.shibboleth.utilities.java.support.component.InitializableComponent,org.opensaml.profile.action.ProfileAction
public class AddSubjectConfirmationToSubjects extends org.opensaml.profile.action.AbstractProfileActionAction that buildsSubjectConfirmationand adds it to theSubjectof 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
Subjectexists in the assertions found, it will be cretaed.An associated
SubjectConfirmationDatawill 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.- Event:
EventIds.PROCEED_EVENT_ID,EventIds.INVALID_MSG_CTX
-
-
Field Summary
Fields Modifier and Type Field Description private Function<org.opensaml.profile.context.ProfileRequestContext,String>addressLookupStrategyOptional strategy to obtain value forSubjectConfirmationData.getAddress().private org.opensaml.saml.common.SAMLObjectBuilder<org.opensaml.saml.saml2.core.SubjectConfirmation>confirmationBuilderBuilder for SubjectConfirmation objects.private org.opensaml.saml.common.SAMLObjectBuilder<org.opensaml.saml.saml2.core.SubjectConfirmationData>confirmationDataBuilderBuilder for SubjectConfirmation objects.private StringconfirmationMethodMethod to add.private Function<org.opensaml.profile.context.ProfileRequestContext,String>inResponseToLookupStrategyOptional strategy to obtain value forSubjectConfirmationData.getInResponseTo().private Function<org.opensaml.profile.context.ProfileRequestContext,Long>lifetimeLookupStrategyOptional strategy to obtain value forSubjectConfirmationData.getNotOnOrAfter().private org.slf4j.LoggerlogClass logger.private booleanoverwriteExistingFlag controlling whether to overwrite existing confirmations.private Function<org.opensaml.profile.context.ProfileRequestContext,String>recipientLookupStrategyOptional strategy to obtain value forSubjectConfirmationData.getRecipient().private org.opensaml.saml.saml2.core.ResponseresponseResponse to modify.private Function<org.opensaml.profile.context.ProfileRequestContext,org.opensaml.saml.saml2.core.Response>responseLookupStrategyStrategy used to locate theResponseto operate on.private org.opensaml.saml.common.SAMLObjectBuilder<org.opensaml.saml.saml2.core.Subject>subjectBuilderBuilder for Subject objects.
-
Constructor Summary
Constructors Constructor Description AddSubjectConfirmationToSubjects()Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private org.opensaml.saml.saml2.core.SubjectConfirmationcloneConfirmation(org.opensaml.saml.saml2.core.SubjectConfirmation confirmation)Create an efficient field-wise copy of aSubjectConfirmation.protected voiddoExecute(org.opensaml.profile.context.ProfileRequestContext profileRequestContext)protected voiddoInitialize()protected booleandoPreExecute(org.opensaml.profile.context.ProfileRequestContext profileRequestContext)private org.opensaml.saml.saml2.core.SubjectgetAssertionSubject(org.opensaml.saml.saml2.core.Assertion assertion)Get the subject to which the confirmation will be added.voidsetAddressLookupStrategy(Function<org.opensaml.profile.context.ProfileRequestContext,String> strategy)Set the strategy used to obtain value forSubjectConfirmationData.getAddress().voidsetInResponseToLookupStrategy(Function<org.opensaml.profile.context.ProfileRequestContext,String> strategy)Set the strategy used to obtain value forSubjectConfirmationData.getInResponseTo().voidsetLifetimeLookupStrategy(Function<org.opensaml.profile.context.ProfileRequestContext,Long> strategy)Set the strategy used to obtain value forSubjectConfirmationData.getNotOnOrAfter().voidsetMethod(String method)Set the confirmation method to use.voidsetOverwriteExisting(boolean flag)Set whether to overwrite any existingSubjectConfirmationobjects found.voidsetRecipientLookupStrategy(Function<org.opensaml.profile.context.ProfileRequestContext,String> strategy)Set the strategy used to obtain value forSubjectConfirmationData.getRecipient().voidsetResponseLookupStrategy(Function<org.opensaml.profile.context.ProfileRequestContext,org.opensaml.saml.saml2.core.Response> strategy)Set the strategy used to locate theResponseto 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
-
-
-
-
Field Detail
-
log
@Nonnull private final org.slf4j.Logger log
Class logger.
-
subjectBuilder
@Nonnull private final org.opensaml.saml.common.SAMLObjectBuilder<org.opensaml.saml.saml2.core.Subject> subjectBuilder
Builder for Subject objects.
-
confirmationBuilder
@Nonnull private final org.opensaml.saml.common.SAMLObjectBuilder<org.opensaml.saml.saml2.core.SubjectConfirmation> confirmationBuilder
Builder for SubjectConfirmation objects.
-
confirmationDataBuilder
@Nonnull private final org.opensaml.saml.common.SAMLObjectBuilder<org.opensaml.saml.saml2.core.SubjectConfirmationData> confirmationDataBuilder
Builder for SubjectConfirmation objects.
-
overwriteExisting
private boolean overwriteExisting
Flag controlling whether to overwrite existing confirmations.
-
responseLookupStrategy
@Nonnull private Function<org.opensaml.profile.context.ProfileRequestContext,org.opensaml.saml.saml2.core.Response> responseLookupStrategy
Strategy used to locate theResponseto operate on.
-
addressLookupStrategy
@Nullable private Function<org.opensaml.profile.context.ProfileRequestContext,String> addressLookupStrategy
Optional strategy to obtain value forSubjectConfirmationData.getAddress().
-
inResponseToLookupStrategy
@Nullable private Function<org.opensaml.profile.context.ProfileRequestContext,String> inResponseToLookupStrategy
Optional strategy to obtain value forSubjectConfirmationData.getInResponseTo().
-
recipientLookupStrategy
@Nullable private Function<org.opensaml.profile.context.ProfileRequestContext,String> recipientLookupStrategy
Optional strategy to obtain value forSubjectConfirmationData.getRecipient().
-
lifetimeLookupStrategy
@Nullable private Function<org.opensaml.profile.context.ProfileRequestContext,Long> lifetimeLookupStrategy
Optional strategy to obtain value forSubjectConfirmationData.getNotOnOrAfter().
-
confirmationMethod
@NonnullAfterInit private String confirmationMethod
Method to add.
-
response
@Nullable private org.opensaml.saml.saml2.core.Response response
Response to modify.
-
-
Method Detail
-
setOverwriteExisting
public void setOverwriteExisting(boolean flag)
Set whether to overwrite any existingSubjectConfirmationobjects found.- Parameters:
flag- true iff the action should overwrite any existing objects
-
setResponseLookupStrategy
public void setResponseLookupStrategy(@Nonnull Function<org.opensaml.profile.context.ProfileRequestContext,org.opensaml.saml.saml2.core.Response> strategy)Set the strategy used to locate theResponseto operate on.- Parameters:
strategy- strategy used to locate theResponseto operate on
-
setAddressLookupStrategy
public void setAddressLookupStrategy(@Nullable Function<org.opensaml.profile.context.ProfileRequestContext,String> strategy)Set the strategy used to obtain value forSubjectConfirmationData.getAddress().- Parameters:
strategy- lookup strategy
-
setInResponseToLookupStrategy
public void setInResponseToLookupStrategy(@Nullable Function<org.opensaml.profile.context.ProfileRequestContext,String> strategy)Set the strategy used to obtain value forSubjectConfirmationData.getInResponseTo().- Parameters:
strategy- lookup strategy
-
setRecipientLookupStrategy
public void setRecipientLookupStrategy(@Nullable Function<org.opensaml.profile.context.ProfileRequestContext,String> strategy)Set the strategy used to obtain value forSubjectConfirmationData.getRecipient().- Parameters:
strategy- lookup strategy
-
setLifetimeLookupStrategy
public void setLifetimeLookupStrategy(@Nullable Function<org.opensaml.profile.context.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 net.shibboleth.utilities.java.support.component.ComponentInitializationException- Overrides:
doInitializein classnet.shibboleth.utilities.java.support.component.AbstractInitializableComponent- Throws:
net.shibboleth.utilities.java.support.component.ComponentInitializationException
-
doPreExecute
protected boolean doPreExecute(@Nonnull org.opensaml.profile.context.ProfileRequestContext profileRequestContext)- Overrides:
doPreExecutein classorg.opensaml.profile.action.AbstractProfileAction
-
doExecute
protected void doExecute(@Nonnull org.opensaml.profile.context.ProfileRequestContext profileRequestContext)- Overrides:
doExecutein classorg.opensaml.profile.action.AbstractProfileAction
-
getAssertionSubject
@Nonnull private org.opensaml.saml.saml2.core.Subject getAssertionSubject(@Nonnull org.opensaml.saml.saml2.core.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 org.opensaml.saml.saml2.core.SubjectConfirmation cloneConfirmation(@Nonnull org.opensaml.saml.saml2.core.SubjectConfirmation confirmation)Create an efficient field-wise copy of aSubjectConfirmation.- Parameters:
confirmation- the object to clone- Returns:
- the copy
-
-