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
Action that builds
SubjectConfirmation
and adds it to the Subject
of 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 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.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate class
Default strategy for obtaining client address from servlet layer. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Function<ProfileRequestContext,
String> Strategy to obtain value forSubjectConfirmationData.getAddress()
.private final SAMLObjectBuilder<SubjectConfirmation>
Builder for SubjectConfirmation objects.private final SAMLObjectBuilder<SubjectConfirmationData>
Builder for SubjectConfirmation objects.private String
Method to add.private Function<ProfileRequestContext,
String> Optional strategy to obtain value forSubjectConfirmationData.getInResponseTo()
.private Function<ProfileRequestContext,
Long> Optional strategy to obtain value forSubjectConfirmationData.getNotOnOrAfter()
.private final org.slf4j.Logger
Class logger.private boolean
Flag controlling whether to overwrite existing confirmations.private Function<ProfileRequestContext,
String> Optional strategy to obtain value forSubjectConfirmationData.getRecipient()
.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 SubjectConfirmation
cloneConfirmation
(SubjectConfirmation confirmation) Create an efficient field-wise copy of aSubjectConfirmation
.protected void
doExecute
(ProfileRequestContext profileRequestContext) Performs this action.protected void
protected boolean
doPreExecute
(ProfileRequestContext profileRequestContext) Called prior to execution, actions may override this method to perform pre-processing for a request.private Subject
getAssertionSubject
(Assertion assertion) Get the subject to which the confirmation will be added.void
Set the strategy used to obtain value forSubjectConfirmationData.getAddress()
.void
Set the strategy used to obtain value forSubjectConfirmationData.getInResponseTo()
.void
Set the strategy used to obtain value forSubjectConfirmationData.getNotOnOrAfter()
.void
Set the confirmation method to use.void
setOverwriteExisting
(boolean flag) Set whether to overwrite any existingSubjectConfirmation
objects found.void
Set the strategy used to obtain value forSubjectConfirmationData.getRecipient()
.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, 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. -
confirmationBuilder
Builder for SubjectConfirmation objects. -
confirmationDataBuilder
Builder for SubjectConfirmation objects. -
overwriteExisting
private boolean overwriteExistingFlag controlling whether to overwrite existing confirmations. -
responseLookupStrategy
Strategy used to locate theResponse
to operate on. -
addressLookupStrategy
Strategy to obtain value forSubjectConfirmationData.getAddress()
. -
inResponseToLookupStrategy
Optional strategy to obtain value forSubjectConfirmationData.getInResponseTo()
. -
recipientLookupStrategy
Optional strategy to obtain value forSubjectConfirmationData.getRecipient()
. -
lifetimeLookupStrategy
Optional strategy to obtain value forSubjectConfirmationData.getNotOnOrAfter()
. -
confirmationMethod
Method to add. -
response
Response to modify.
-
-
Constructor Details
-
AddSubjectConfirmationToSubjects
public AddSubjectConfirmationToSubjects()Constructor.
-
-
Method Details
-
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
Set the strategy used to locate theResponse
to operate on.- Parameters:
strategy
- strategy used to locate theResponse
to operate on
-
setAddressLookupStrategy
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
Set the strategy used to obtain value forSubjectConfirmationData.getRecipient()
.- Parameters:
strategy
- lookup strategy
-
setLifetimeLookupStrategy
Set the strategy used to obtain value forSubjectConfirmationData.getNotOnOrAfter()
.- Parameters:
strategy
- lookup strategy
-
setMethod
Set the confirmation method to use.- Parameters:
method
- confirmation method to use
-
doInitialize
- Overrides:
doInitialize
in 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
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
-
getAssertionSubject
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
Create an efficient field-wise copy of aSubjectConfirmation
.- Parameters:
confirmation
- the object to clone- Returns:
- the copy
-