Class PopulateBindingAndEndpointContexts
- All Implemented Interfaces:
Component
,DestructableComponent
,InitializableComponent
,ProfileAction
,Aware
,MessageSource
,MessageSourceAware
,Action
SAMLBindingContext
and when appropriate the
SAMLEndpointContext
based on the inbound request.
If the inbound binding is found in the set of supported bindings, and it is "synchronous", then there is no endpoint (the response is sent directly back to the requester), and an endpoint context is not created. A binding context is created based on the inbound binding.
Otherwise, the endpoint context is populated by constructing a "template" endpoint,
with content based on the inbound request, and relying on an injected EndpointResolver
and an injected list of acceptable bindings.
The binding context is populated based on the computed endpoint's binding, and the
inbound SAMLBindingContext
's relay state.
If the outbound binding is an artifact-based binding, then the action also creates
a SAMLArtifactContext
populated by settings from the SAMLArtifactConfiguration
.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate SAMLArtifactConfiguration
Artifact configuration.Strategy function for access toSAMLArtifactContext
to populate.private boolean
Whether an artifact-based binding implies the use of a secure channel.Optional strategy function to obtain aBestMatchLocationCriterion
to inject.Strategy function for access toSAMLBindingContext
to populate.private List<BindingDescriptor>
List of possible bindings, in preference order.private Function<ProfileRequestContext,
List<BindingDescriptor>> Lookup strategy for bindings.private XMLObjectBuilder<?>
Builder for template endpoints.Strategy function for access toSAMLEndpointContext
to populate.private EndpointResolver<?>
Endpoint resolver.private QName
The type of endpoint to resolve.private Object
Optional inbound message.private final org.slf4j.Logger
Class logger.private SAMLMetadataContext
Optional metadata for use in endpoint derivation/validation.Strategy function for access toSAMLMetadataContext
for input to resolver.Strategy function for access toRelyingPartyContext
.private String
Optional RP name for logging.private boolean
Whether to bypass endpoint validation because message is signed.private boolean
Is the relying party "verified" in SAML terms? -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate EndpointCriterion<?>
buildEndpointCriterion
(String unverifiedBinding) Build a template Endpoint object to use as input criteria to the resolution process and wrap it in a criterion object.protected void
doExecute
(ProfileRequestContext profileRequestContext) protected void
protected boolean
doPreExecute
(ProfileRequestContext profileRequestContext) private boolean
handleSynchronousRequest
(ProfileRequestContext profileRequestContext) Check for an inbound request binding that is synchronous and handle appropriately.void
Set lookup strategy forSAMLArtifactContext
to populate.void
setArtifactImpliesSecureChannel
(boolean flag) Set whether an artifact-based binding implies that the eventual channel for SAML message exchange will be secured, overriding the integrity and confidentiality properties of the current channel.void
setBestMatchCriterionLookupStrategy
(Function<ProfileRequestContext, BestMatchLocationCriterion> strategy) Set lookup strategy forBestMatchLocationCriterion
to inject.void
Set lookup strategy forSAMLBindingContext
to populate.void
setBindingDescriptorsLookupStrategy
(Function<ProfileRequestContext, List<BindingDescriptor>> strategy) Set lookup strategy to return the bindings to evaluate for use, in preference order.void
Set lookup strategy forSAMLEndpointContext
to populate.void
setEndpointResolver
(EndpointResolver<?> resolver) Set a customEndpointResolver
to use.void
setEndpointType
(QName type) Set the type of endpoint to resolve, defaults to<AssertionConsumerService>
.void
Set lookup strategy forSAMLMetadataContext
for input to resolution.void
Set lookup strategy forRelyingPartyContext
.Methods inherited from class net.shibboleth.idp.profile.AbstractProfileAction
doExecute, execute, getMessage, getMessage, getMessage, getProfileContextLookupStrategy, getRequestContext, getResult, setMessageSource, setProfileContextLookupStrategy
Methods inherited from class org.opensaml.profile.action.AbstractConditionalProfileAction
getActivationCondition, setActivationCondition
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. -
endpointType
The type of endpoint to resolve. -
endpointResolver
Endpoint resolver. -
bindingDescriptorsLookupStrategy
@Nonnull private Function<ProfileRequestContext,List<BindingDescriptor>> bindingDescriptorsLookupStrategyLookup strategy for bindings. -
relyingPartyContextLookupStrategy
@Nonnull private Function<ProfileRequestContext,RelyingPartyContext> relyingPartyContextLookupStrategyStrategy function for access toRelyingPartyContext
. -
metadataContextLookupStrategy
Strategy function for access toSAMLMetadataContext
for input to resolver. -
bindingContextLookupStrategy
Strategy function for access toSAMLBindingContext
to populate. -
endpointContextLookupStrategy
Strategy function for access toSAMLEndpointContext
to populate. -
artifactContextLookupStrategy
Strategy function for access toSAMLArtifactContext
to populate. -
bestMatchCriterionLookupStrategy
@Nullable private Function<ProfileRequestContext,BestMatchLocationCriterion> bestMatchCriterionLookupStrategyOptional strategy function to obtain aBestMatchLocationCriterion
to inject. -
bindingDescriptors
List of possible bindings, in preference order. -
artifactImpliesSecureChannel
private boolean artifactImpliesSecureChannelWhether an artifact-based binding implies the use of a secure channel. -
endpointBuilder
Builder for template endpoints. -
artifactConfiguration
Artifact configuration. -
inboundMessage
Optional inbound message. -
relyingPartyId
Optional RP name for logging. -
mdContext
Optional metadata for use in endpoint derivation/validation. -
verified
private boolean verifiedIs the relying party "verified" in SAML terms? -
skipValidationSinceSigned
private boolean skipValidationSinceSignedWhether to bypass endpoint validation because message is signed.
-
-
Constructor Details
-
PopulateBindingAndEndpointContexts
public PopulateBindingAndEndpointContexts()Constructor.
-
-
Method Details
-
setEndpointType
Set the type of endpoint to resolve, defaults to<AssertionConsumerService>
.- Parameters:
type
- type of endpoint to resolve
-
setEndpointResolver
Set a customEndpointResolver
to use.- Parameters:
resolver
- endpoint resolver to use
-
setBindingDescriptorsLookupStrategy
public void setBindingDescriptorsLookupStrategy(@Nonnull Function<ProfileRequestContext, List<BindingDescriptor>> strategy) Set lookup strategy to return the bindings to evaluate for use, in preference order.- Parameters:
strategy
- lookup strategy- Since:
- 4.0.0
-
setRelyingPartyContextLookupStrategy
public void setRelyingPartyContextLookupStrategy(@Nonnull Function<ProfileRequestContext, RelyingPartyContext> strategy) Set lookup strategy forRelyingPartyContext
.- Parameters:
strategy
- lookup strategy
-
setMetadataContextLookupStrategy
public void setMetadataContextLookupStrategy(@Nonnull Function<ProfileRequestContext, SAMLMetadataContext> strategy) Set lookup strategy forSAMLMetadataContext
for input to resolution.- Parameters:
strategy
- lookup strategy
-
setBindingContextLookupStrategy
public void setBindingContextLookupStrategy(@Nonnull Function<ProfileRequestContext, SAMLBindingContext> strategy) Set lookup strategy forSAMLBindingContext
to populate.- Parameters:
strategy
- lookup strategy
-
setEndpointContextLookupStrategy
public void setEndpointContextLookupStrategy(@Nonnull Function<ProfileRequestContext, SAMLEndpointContext> strategy) Set lookup strategy forSAMLEndpointContext
to populate.- Parameters:
strategy
- lookup strategy
-
setArtifactContextLookupStrategy
public void setArtifactContextLookupStrategy(@Nonnull Function<ProfileRequestContext, SAMLArtifactContext> strategy) Set lookup strategy forSAMLArtifactContext
to populate.- Parameters:
strategy
- lookup strategy
-
setBestMatchCriterionLookupStrategy
public void setBestMatchCriterionLookupStrategy(@Nullable Function<ProfileRequestContext, BestMatchLocationCriterion> strategy) Set lookup strategy forBestMatchLocationCriterion
to inject.- Parameters:
strategy
- lookup strategy
-
setArtifactImpliesSecureChannel
public void setArtifactImpliesSecureChannel(boolean flag) Set whether an artifact-based binding implies that the eventual channel for SAML message exchange will be secured, overriding the integrity and confidentiality properties of the current channel.This has the effect of suppressing signing and encryption when an artifact binding is used, which is normally desirable.
Defaults to true.
- Parameters:
flag
- flag to set
-
doInitialize
- Overrides:
doInitialize
in classAbstractInitializableComponent
- Throws:
ComponentInitializationException
-
doPreExecute
- Overrides:
doPreExecute
in classAbstractConditionalProfileAction
-
doExecute
- Overrides:
doExecute
in classAbstractProfileAction
-
handleSynchronousRequest
Check for an inbound request binding that is synchronous and handle appropriately.- Parameters:
profileRequestContext
- profile request context- Returns:
- true iff a synchronous binding was handled
-
buildEndpointCriterion
@Nonnull private EndpointCriterion<?> buildEndpointCriterion(@Nonnull @NotEmpty String unverifiedBinding) Build a template Endpoint object to use as input criteria to the resolution process and wrap it in a criterion object.- Parameters:
unverifiedBinding
- default binding to use for an unverified requester with no Binding specified- Returns:
- criterion to give to resolver
-