Author: scantor
Date: Sun Sep 7 20:36:44 2014
New Revision: 281
URL: http://svn.shibboleth.net/view/java-idp-testbed?rev=281&view=rev
Log:
IDP-224 - kind of working SAML logout flow
Modified:
trunk/src/main/java/sp/BaseSAMLController.java
trunk/src/main/java/sp/SAML2Controller.java
trunk/src/main/webapp/index.html
Modified: trunk/src/main/java/sp/BaseSAMLController.java
URL: http://svn.shibboleth.net/view/java-idp-testbed/trunk/src/main/java/sp/BaseSAMLController.java?rev=281&r1=280&r2=281&view=diff
==============================================================================
--- trunk/src/main/java/sp/BaseSAMLController.java (original)
+++ trunk/src/main/java/sp/BaseSAMLController.java Sun Sep 7 20:36:44 2014
@@ -31,6 +31,7 @@
import org.opensaml.messaging.decoder.MessageDecodingException;
import org.opensaml.saml.common.SAMLObject;
import org.opensaml.saml.saml2.binding.decoding.impl.HTTPPostDecoder;
+import org.opensaml.saml.saml2.binding.decoding.impl.HTTPRedirectDeflateDecoder;
import org.opensaml.security.credential.Credential;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -71,4 +72,24 @@
decoder.destroy();
}
}
-}
+
+ protected MessageContext<SAMLObject> decodeInboundMessageContextRedirect(HttpServletRequest servletRequest)
+ throws Exception {
+ HTTPRedirectDeflateDecoder decoder = new HTTPRedirectDeflateDecoder();
+ try {
+ decoder.setHttpServletRequest(servletRequest);
+ decoder.setParserPool(parserPool);
+ decoder.initialize();
+
+ decoder.decode();
+
+ return decoder.getMessageContext();
+ } catch (ComponentInitializationException | MessageDecodingException e) {
+ log.error("Error decoding inbound message context", e);
+ throw e;
+ } finally {
+ decoder.destroy();
+ }
+ }
+
+}
Modified: trunk/src/main/java/sp/SAML2Controller.java
URL: http://svn.shibboleth.net/view/java-idp-testbed/trunk/src/main/java/sp/SAML2Controller.java?rev=281&r1=280&r2=281&view=diff
==============================================================================
--- trunk/src/main/java/sp/SAML2Controller.java (original)
+++ trunk/src/main/java/sp/SAML2Controller.java Sun Sep 7 20:36:44 2014
@@ -4,6 +4,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import javax.xml.namespace.QName;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.net.URLBuilder;
@@ -17,12 +18,20 @@
import org.opensaml.saml.common.messaging.context.SAMLEndpointContext;
import org.opensaml.saml.common.messaging.context.SAMLPeerEntityContext;
import org.opensaml.saml.common.xml.SAMLConstants;
+import org.opensaml.saml.ext.saml2aslo.Asynchronous;
import org.opensaml.saml.saml2.binding.encoding.impl.HTTPPostEncoder;
import org.opensaml.saml.saml2.binding.encoding.impl.HTTPRedirectDeflateEncoder;
+import org.opensaml.saml.saml2.common.Extensions;
import org.opensaml.saml.saml2.core.AuthnRequest;
import org.opensaml.saml.saml2.core.Issuer;
+import org.opensaml.saml.saml2.core.LogoutRequest;
+import org.opensaml.saml.saml2.core.LogoutResponse;
+import org.opensaml.saml.saml2.core.NameID;
import org.opensaml.saml.saml2.core.NameIDPolicy;
+import org.opensaml.saml.saml2.core.RequestAbstractType;
import org.opensaml.saml.saml2.core.Response;
+import org.opensaml.saml.saml2.metadata.Endpoint;
+import org.opensaml.saml.saml2.metadata.SingleLogoutService;
import org.opensaml.saml.saml2.metadata.SingleSignOnService;
import org.opensaml.xmlsec.SignatureSigningParameters;
import org.opensaml.xmlsec.context.SecurityParametersContext;
@@ -46,16 +55,18 @@
@RequestMapping(value="/InitSSO/Redirect", method=RequestMethod.GET)
public void initSSORequestRedirect(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws Exception {
AuthnRequest authnRequest = buildAuthnRequest(servletRequest);
- authnRequest.setDestination(getDestinationRedirect(servletRequest));
- MessageContext<SAMLObject> messageContext = buildOutboundMessageContext(authnRequest, SAMLConstants.SAML2_REDIRECT_BINDING_URI);
+ authnRequest.setDestination(getDestinationRedirect(servletRequest, "SSO"));
+ MessageContext<SAMLObject> messageContext = buildOutboundMessageContext(authnRequest,
+ buildIdpSsoEndpoint(SAMLConstants.SAML2_REDIRECT_BINDING_URI, authnRequest.getDestination()));
encodeOutboundMessageContextRedirect(messageContext, servletResponse);
}
@RequestMapping(value="/InitSSO/POST", method=RequestMethod.GET)
public void initSsoRequestPost(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws Exception {
AuthnRequest authnRequest = buildAuthnRequest(servletRequest);
- authnRequest.setDestination(getDestinationPost(servletRequest));
- MessageContext<SAMLObject> messageContext = buildOutboundMessageContext(authnRequest, SAMLConstants.SAML2_POST_BINDING_URI);
[... 272 lines stripped ...]