Class EncryptNameIDs
- All Implemented Interfaces:
Component,DestructableComponent,InitializableComponent,ProfileAction
Action that encrypts all
NameIDs in a message obtained from a lookup strategy,
by default the outbound message context.
Specific formats may be excluded from encryption, by default excluding the "entity" format.
- Event:
EventIds.PROCEED_EVENT_ID,EventIds.UNABLE_TO_ENCRYPT- Postcondition:
- All SAML
NameIDs in all locations have been replaced with encrypted versions. It's possible for some to be replaced but others not if an error occurs.
-
Field Summary
FieldsModifier and TypeFieldDescriptionFormats to exclude from encryption.private final org.slf4j.LoggerClass logger.private SAMLObjectThe message to operate on.private Function<ProfileRequestContext,SAMLObject> Strategy used to locate the message to operate on. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voiddoExecute(ProfileRequestContext profileRequestContext) Performs this action.protected booleandoPreExecute(ProfileRequestContext profileRequestContext) Called prior to execution, actions may override this method to perform pre-processing for a request.protected EncryptionParametersReturn the right set of parameters for the operation to be performed, or none if no encryption should occur.private voidprocessAssertion(Assertion assertion) Decrypt anyEncryptedIDfound in an assertion and replace it with the result.private voidprocessLogoutRequest(LogoutRequest request) Encrypt aNameIDfound in a LogoutRequest and replace it with the result.private voidEncrypt aNameIDfound in a ManageNameIDRequest and replace it with the result.private voidEncrypt aNameIDfound in a NameIDMappingRequest and replace it with the result.private voidEncrypt aNameIDfound in a NameIDMappingResponse and replace it with the result.private voidprocessSubject(Subject subject) Encrypt anyNameIDs found in a subject and replace them with the result.voidsetExcludedFormats(Collection<String> formats) Set theNameIDformats to ignore and leave unencrypted.voidSet the strategy used to locate theResponseto operate on.private booleanshouldEncrypt(NameID name) Return true iff the NameID should be encrypted.Methods inherited from class org.opensaml.saml.saml2.profile.impl.AbstractEncryptAction
getEncrypter, setEncryptionContextLookupStrategy, setEncryptToSelf, setEncryptToSelfParametersStrategy, setKeyPlacementLookupStrategy, setRecipientLookupStrategy, setSelfRecipientLookupStrategyMethods inherited from class org.opensaml.profile.action.AbstractConditionalProfileAction
getActivationCondition, setActivationConditionMethods 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, doInitialize, 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. -
messageLookupStrategy
Strategy used to locate the message to operate on. -
excludedFormats
Formats to exclude from encryption. -
message
The message to operate on.
-
-
Constructor Details
-
EncryptNameIDs
public EncryptNameIDs()Constructor.
-
-
Method Details
-
setMessageLookupStrategy
Set the strategy used to locate theResponseto operate on.- Parameters:
strategy- strategy used to locate theResponseto operate on
-
setExcludedFormats
Set theNameIDformats to ignore and leave unencrypted.- Parameters:
formats- formats to exclude
-
getApplicableParameters
Return the right set of parameters for the operation to be performed, or none if no encryption should occur.- Specified by:
getApplicableParametersin classAbstractEncryptAction- Parameters:
ctx- possibly null input context to pull parameters from- Returns:
- the right parameter set, or null for none
-
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 classAbstractEncryptAction- 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
-
shouldEncrypt
Return true iff the NameID should be encrypted.- Parameters:
name- NameID to check- Returns:
- true iff encryption should happen
-
processSubject
Encrypt anyNameIDs found in a subject and replace them with the result.- Parameters:
subject- subject to operate on- Throws:
EncryptionException- if an error occurs
-
processLogoutRequest
Encrypt aNameIDfound in a LogoutRequest and replace it with the result.- Parameters:
request- request to operate on- Throws:
EncryptionException- if an error occurs
-
processManageNameIDRequest
private void processManageNameIDRequest(@Nonnull ManageNameIDRequest request) throws EncryptionException Encrypt aNameIDfound in a ManageNameIDRequest and replace it with the result.- Parameters:
request- request to operate on- Throws:
EncryptionException- if an error occurs
-
processNameIDMappingRequest
private void processNameIDMappingRequest(@Nonnull NameIDMappingRequest request) throws EncryptionException Encrypt aNameIDfound in a NameIDMappingRequest and replace it with the result.- Parameters:
request- request to operate on- Throws:
EncryptionException- if an error occurs
-
processNameIDMappingResponse
private void processNameIDMappingResponse(@Nonnull NameIDMappingResponse response) throws EncryptionException Encrypt aNameIDfound in a NameIDMappingResponse and replace it with the result.- Parameters:
response- response to operate on- Throws:
EncryptionException- if an error occurs
-
processAssertion
Decrypt anyEncryptedIDfound in an assertion and replace it with the result.- Parameters:
assertion- assertion to operate on- Throws:
EncryptionException- if an error occurs
-