@Override protected void doDecode() throws MessageDecodingException { final SAML2MessageContext messageContext = new SAML2MessageContext(); if (ContextHelper.isGet(context)) { final byte[] base64DecodedMessage = this.getBase64DecodedMessage(); final InputStream inflatedMessage = inflate(base64DecodedMessage); final SAMLObject inboundMessage = (SAMLObject) this.unmarshallMessage(inflatedMessage); messageContext.setMessage(inboundMessage); logger.debug("Decoded SAML message"); this.populateBindingContext(messageContext); this.setMessageContext(messageContext); } else { throw new MessageDecodingException("This message decoder only supports the HTTP-Redirect method"); } }
@Override protected AbstractPac4jDecoder getDecoder(final WebContext webContext) { final AbstractPac4jDecoder decoder; if (ContextHelper.isPost(webContext)) { decoder = new Pac4jHTTPPostDecoder(webContext); try { decoder.setParserPool(Configuration.getParserPool()); decoder.initialize(); decoder.decode(); } catch (final Exception e) { throw new SAMLException("Error decoding POST SAML message", e); } } else if (ContextHelper.isGet(webContext)) { decoder = new Pac4jHTTPRedirectDeflateDecoder(webContext); try { decoder.setParserPool(Configuration.getParserPool()); decoder.initialize(); decoder.decode(); } catch (final Exception e) { throw new SAMLException("Error decoding HTTP-Redirect SAML message", e); } } else { throw new SAMLException("Only GET or POST requests are accepted"); } return decoder; }