Class HTTPArtifactEncoder
- java.lang.Object
-
- net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
-
- org.opensaml.messaging.encoder.AbstractMessageEncoder
-
- org.opensaml.messaging.encoder.servlet.AbstractHttpServletResponseMessageEncoder
-
- org.opensaml.messaging.encoder.servlet.BaseHttpServletResponseXMLMessageEncoder
-
- org.opensaml.saml.saml2.binding.encoding.impl.BaseSAML2MessageEncoder
-
- org.opensaml.saml.saml2.binding.encoding.impl.HTTPArtifactEncoder
-
- All Implemented Interfaces:
Component
,DestructableComponent
,InitializableComponent
,UnmodifiableComponent
,MessageEncoder
,HttpServletResponseMessageEncoder
,SAMLMessageEncoder
public class HTTPArtifactEncoder extends BaseSAML2MessageEncoder
SAML 2 Artifact Binding encoder, support both HTTP GET and POST.
-
-
Field Summary
Fields Modifier and Type Field Description private SAMLArtifactMap
artifactMap
SAML artifact map used to store created artifacts for later retrieval.static String
DEFAULT_TEMPLATE_ID
Default template ID.private byte[]
defaultArtifactType
Default artifact type to use when encoding messages.private org.slf4j.Logger
log
Class logger.private boolean
postEncoding
Whether the POST encoding should be used, instead of GET.private org.apache.velocity.app.VelocityEngine
velocityEngine
Velocity engine used to evaluate the template when performing POST encoding.private String
velocityTemplateId
ID of the velocity template used when performing POST encoding.
-
Constructor Summary
Constructors Constructor Description HTTPArtifactEncoder()
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected SAML2Artifact
buildArtifact(MessageContext messageContext)
Builds the SAML 2 artifact for the outgoing message.protected void
doDestroy()
protected void
doEncode()
protected void
doInitialize()
SAMLArtifactMap
getArtifactMap()
Get the SAML artifact map to use.String
getBindingURI()
protected void
getEncode()
Performs HTTP GET based encoding.private String
getInboundMessageIssuer(MessageContext messageContext)
Get the requester.private String
getOutboundMessageIssuer(MessageContext messageContext)
Get the outbound message issuer.private byte[]
getSAMLArtifactType(MessageContext messageContext)
Get the SAML artifact type from the message context.org.apache.velocity.app.VelocityEngine
getVelocityEngine()
Get the VelocityEngine instance.String
getVelocityTemplateId()
Get the Velocity template id.boolean
isPostEncoding()
Get whether the encoder will encode the artifact via POST encoding.protected void
postEncode()
Performs HTTP POST based encoding.void
setArtifactMap(SAMLArtifactMap newArtifactMap)
Set the SAML artifact map to use.void
setPostEncoding(boolean post)
Set whether the encoder will encode the artifact via POST encoding.void
setVelocityEngine(org.apache.velocity.app.VelocityEngine newVelocityEngine)
Set the VelocityEngine instance.void
setVelocityTemplateId(String newVelocityTemplateId)
Set the Velocity template id.private void
storeSAMLArtifactType(MessageContext messageContext, byte[] artifactType)
Store the SAML artifact type in the message context.-
Methods inherited from class org.opensaml.saml.saml2.binding.encoding.impl.BaseSAML2MessageEncoder
getEndpointURL
-
Methods inherited from class org.opensaml.messaging.encoder.servlet.BaseHttpServletResponseXMLMessageEncoder
encode, getMessageToLog, logEncodedMessage, marshallMessage
-
Methods inherited from class org.opensaml.messaging.encoder.servlet.AbstractHttpServletResponseMessageEncoder
getHttpServletResponse, setHttpServletResponse
-
Methods inherited from class org.opensaml.messaging.encoder.AbstractMessageEncoder
getMessageContext, prepareContext, setMessageContext
-
Methods inherited from class net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
destroy, 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.DestructableComponent
destroy, isDestroyed
-
Methods inherited from interface net.shibboleth.utilities.java.support.component.InitializableComponent
initialize, isInitialized
-
Methods inherited from interface org.opensaml.messaging.encoder.MessageEncoder
encode, prepareContext, setMessageContext
-
-
-
-
Field Detail
-
DEFAULT_TEMPLATE_ID
@Nonnull @NotEmpty public static final String DEFAULT_TEMPLATE_ID
Default template ID.- See Also:
- Constant Field Values
-
log
@Nonnull private final org.slf4j.Logger log
Class logger.
-
postEncoding
private boolean postEncoding
Whether the POST encoding should be used, instead of GET.
-
velocityEngine
@Nullable private org.apache.velocity.app.VelocityEngine velocityEngine
Velocity engine used to evaluate the template when performing POST encoding.
-
velocityTemplateId
@Nonnull @NotEmpty private String velocityTemplateId
ID of the velocity template used when performing POST encoding.
-
artifactMap
@NonnullAfterInit private SAMLArtifactMap artifactMap
SAML artifact map used to store created artifacts for later retrieval.
-
defaultArtifactType
@Nonnull @NotEmpty private byte[] defaultArtifactType
Default artifact type to use when encoding messages.
-
-
Method Detail
-
getBindingURI
public String getBindingURI()
-
isPostEncoding
public boolean isPostEncoding()
Get whether the encoder will encode the artifact via POST encoding.- Returns:
- true if POST encoding will be used, false if GET encoding will be used
-
setPostEncoding
public void setPostEncoding(boolean post)
Set whether the encoder will encode the artifact via POST encoding.- Parameters:
post
- true if POST encoding will be used, false if GET encoding will be used
-
getVelocityEngine
@Nullable public org.apache.velocity.app.VelocityEngine getVelocityEngine()
Get the VelocityEngine instance.- Returns:
- return the VelocityEngine instance
-
setVelocityEngine
public void setVelocityEngine(@Nullable org.apache.velocity.app.VelocityEngine newVelocityEngine)
Set the VelocityEngine instance.- Parameters:
newVelocityEngine
- the new VelocityEngine instane
-
getVelocityTemplateId
@Nonnull @NotEmpty public String getVelocityTemplateId()
Get the Velocity template id.Defaults to
DEFAULT_TEMPLATE_ID
.- Returns:
- return the Velocity template id
-
setVelocityTemplateId
public void setVelocityTemplateId(@Nonnull @NotEmpty String newVelocityTemplateId)
Set the Velocity template id.Defaults to
DEFAULT_TEMPLATE_ID
.- Parameters:
newVelocityTemplateId
- the new Velocity template id
-
getArtifactMap
@NonnullAfterInit public SAMLArtifactMap getArtifactMap()
Get the SAML artifact map to use.- Returns:
- the artifactMap.
-
setArtifactMap
public void setArtifactMap(@Nonnull SAMLArtifactMap newArtifactMap)
Set the SAML artifact map to use.- Parameters:
newArtifactMap
- the new artifactMap
-
doInitialize
protected void doInitialize() throws ComponentInitializationException
- Overrides:
doInitialize
in classAbstractHttpServletResponseMessageEncoder
- Throws:
ComponentInitializationException
-
doDestroy
protected void doDestroy()
- Overrides:
doDestroy
in classAbstractHttpServletResponseMessageEncoder
-
doEncode
protected void doEncode() throws MessageEncodingException
- Specified by:
doEncode
in classAbstractMessageEncoder
- Throws:
MessageEncodingException
-
postEncode
protected void postEncode() throws MessageEncodingException
Performs HTTP POST based encoding.- Throws:
MessageEncodingException
- thrown if there is a problem POST encoding the artifact
-
getEncode
protected void getEncode() throws MessageEncodingException
Performs HTTP GET based encoding.- Throws:
MessageEncodingException
- thrown if there is a problem GET encoding the artifact
-
buildArtifact
@Nonnull protected SAML2Artifact buildArtifact(@Nonnull MessageContext messageContext) throws MessageEncodingException
Builds the SAML 2 artifact for the outgoing message.- Parameters:
messageContext
- current request context- Returns:
- SAML 2 artifact for outgoing message
- Throws:
MessageEncodingException
- thrown if the artifact can not be created
-
getOutboundMessageIssuer
@Nullable private String getOutboundMessageIssuer(@Nonnull MessageContext messageContext)
Get the outbound message issuer.- Parameters:
messageContext
- the message context- Returns:
- the outbound message issuer
-
getInboundMessageIssuer
@Nullable private String getInboundMessageIssuer(@Nonnull MessageContext messageContext)
Get the requester.- Parameters:
messageContext
- the message context- Returns:
- the requester
-
storeSAMLArtifactType
private void storeSAMLArtifactType(@Nonnull MessageContext messageContext, @Nonnull @NotEmpty byte[] artifactType)
Store the SAML artifact type in the message context.- Parameters:
messageContext
- the message contextartifactType
- the artifact type to store
-
getSAMLArtifactType
@Nullable private byte[] getSAMLArtifactType(@Nonnull MessageContext messageContext)
Get the SAML artifact type from the message context.- Parameters:
messageContext
- the message context- Returns:
- the artifact type
-
-