--- /dev/null
+/*
+ * Copyright [2007] [University Corporation for Advanced Internet Development, Inc.]
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package edu.internet2.middleware.shibboleth.idp.profile;
+
+import edu.internet2.middleware.shibboleth.common.profile.AbstractProfileHandler;
+import edu.internet2.middleware.shibboleth.common.relyingparty.provider.SAMLMDRelyingPartyConfigurationManager;
+import edu.internet2.middleware.shibboleth.idp.session.Session;
+
+/**
+ * Base class for SAML profile handlers.
+ */
+public abstract class AbstractSAMLProfileHandler extends
+ AbstractProfileHandler<SAMLMDRelyingPartyConfigurationManager, Session> {
+
+}
\ No newline at end of file
import org.springframework.web.servlet.HttpServletBean;
-import edu.internet2.middleware.shibboleth.common.profile.ProfileHandler;
-import edu.internet2.middleware.shibboleth.common.relyingparty.RelyingPartyManager;
-import edu.internet2.middleware.shibboleth.common.session.SessionManager;
-import edu.internet2.middleware.shibboleth.idp.session.Session;
+import edu.internet2.middleware.shibboleth.common.profile.AbstractProfileHandler;
/**
- * Servlet responsible for dispatching incoming requests to the appropriate {@link ProfileHandler}.
+ * Servlet responsible for dispatching incoming requests to the appropriate {@link AbstractProfileHandler}.
*/
public class ProfileRequestDispatcher extends HttpServletBean {
/** Registered profile handlers. */
- private Map<String, ProfileHandler> profileHandlers;
-
- /** User session manager. */
- private SessionManager<Session> sessionManager;
-
- /** Relying party configuration manager. */
- private RelyingPartyManager rpManager;
+ private Map<String, AbstractProfileHandler> profileHandlers;
/**
* Gets the profile handlers currently registered.
*
* @return profile handlers currently registered
*/
- public Map<String, ProfileHandler> getProfileHandlers() {
+ public Map<String, AbstractProfileHandler> getProfileHandlers() {
return profileHandlers;
}
*
* @param handlers the profile handlers to use
*/
- public void setProfileHandlers(Map<String, ProfileHandler> handlers) {
+ public void setProfileHandlers(Map<String, AbstractProfileHandler> handlers) {
profileHandlers = handlers;
}
/** {@inheritDoc} */
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException {
String path = request.getPathInfo();
- ProfileHandler handler = profileHandlers.get(path);
+ AbstractProfileHandler handler = profileHandlers.get(path);
if (handler != null) {
- ShibbolethProfileRequest profileReq = new ShibbolethProfileRequest(request, null, sessionManager, rpManager);
- ShibbolethProfileResponse profileResp = new ShibbolethProfileResponse(response, null);
+ ShibbolethProfileRequest profileReq = new ShibbolethProfileRequest(request);
+ ShibbolethProfileResponse profileResp = new ShibbolethProfileResponse(response);
handler.processRequest(profileReq, profileResp);
}
import javax.servlet.http.HttpServletRequest;
-import org.opensaml.common.binding.MessageDecoder;
-
import edu.internet2.middleware.shibboleth.common.profile.ProfileRequest;
-import edu.internet2.middleware.shibboleth.common.relyingparty.RelyingPartyConfiguration;
-import edu.internet2.middleware.shibboleth.common.relyingparty.RelyingPartyManager;
-import edu.internet2.middleware.shibboleth.common.session.SessionManager;
-import edu.internet2.middleware.shibboleth.idp.session.Session;
/**
* Shibboleth {@link ProfileRequest}.
*/
-public class ShibbolethProfileRequest implements ProfileRequest<HttpServletRequest, Session> {
+public class ShibbolethProfileRequest implements ProfileRequest<HttpServletRequest> {
/** The in comming request. */
private HttpServletRequest rawRequest;
- /** Configuration information for the requesting party. */
- private RelyingPartyConfiguration rpConfiguration;
-
- /** The current user session. */
- private Session userSession;
-
/**
* Constructor.
*
* @param request the incomming HTTP request
- * @param decoder the decoder for the request, all information but the request must be set already
- * @param sessionManager the manager of current user sessions
- * @param rpConfigManager the relying party configuration manager
*/
- public ShibbolethProfileRequest(HttpServletRequest request, MessageDecoder<HttpServletRequest> decoder,
- SessionManager<Session> sessionManager, RelyingPartyManager rpConfigManager){
-
+ public ShibbolethProfileRequest(HttpServletRequest request){
rawRequest = request;
- userSession = sessionManager.getSession(request.getSession().getId());
}
/** {@inheritDoc} */
public HttpServletRequest getRawRequest() {
return rawRequest;
}
-
- /** {@inheritDoc} */
- public RelyingPartyConfiguration getRelyingPartyConfiguration() {
- return rpConfiguration;
- }
-
- /** {@inheritDoc} */
- public Session getSession() {
- return userSession;
- }
}
\ No newline at end of file
import javax.servlet.http.HttpServletResponse;
-import org.opensaml.common.binding.MessageEncoder;
-
import edu.internet2.middleware.shibboleth.common.profile.ProfileResponse;
/**
* Constructor.
*
* @param response the raw response
- * @param encoder the encoder used to encode the response
+
*/
- public ShibbolethProfileResponse(HttpServletResponse response, MessageEncoder<HttpServletResponse> encoder) {
+ public ShibbolethProfileResponse(HttpServletResponse response) {
rawResponse = response;
}
+++ /dev/null
-/*
- * Copyright [2006] [University Corporation for Advanced Internet Development, Inc.]
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.internet2.middleware.shibboleth.idp.profile.adfs;
-
-import javax.servlet.ServletException;
-
-import edu.internet2.middleware.shibboleth.common.profile.ProfileHandler;
-import edu.internet2.middleware.shibboleth.common.profile.ProfileRequest;
-import edu.internet2.middleware.shibboleth.common.profile.ProfileResponse;
-
-/**
- * ADFS (Active Directory Federation Service) single sign-on profile handler
- */
-public class SingleSignOn implements ProfileHandler {
-
- /** {@inheritDoc} */
- public boolean processRequest(ProfileRequest request, ProfileResponse response) throws ServletException {
- // TODO Auto-generated method stub
- return false;
- }
-}
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright [2007] [University Corporation for Advanced Internet Development, Inc.]
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package edu.internet2.middleware.shibboleth.idp.profile.saml1;
-
-import javax.servlet.ServletRequest;
-
-import org.apache.log4j.Logger;
-import org.opensaml.Configuration;
-import org.opensaml.common.SAMLObject;
-import org.opensaml.common.SAMLVersion;
-import org.opensaml.common.binding.BindingException;
-import org.opensaml.common.impl.SecureRandomIdentifierGenerator;
-import org.opensaml.xml.XMLObjectBuilderFactory;
-
-import edu.internet2.middleware.shibboleth.common.attribute.resolver.AttributeResolver;
-import edu.internet2.middleware.shibboleth.common.profile.ProfileHandler;
-
-/**
- * Common implementation details for profile handlers.
- */
-public abstract class AbstractProfileHandler implements ProfileHandler {
-
- /** SAML Version for this profile handler. */
- public static final SAMLVersion SAML_VERSION = SAMLVersion.VERSION_11;
-
- /** Class logger. */
- private static Logger log = Logger.getLogger(AbstractProfileHandler.class);
-
- /** For building XML. */
- private XMLObjectBuilderFactory builderFactory;
-
- /** For generating random ids. */
- private SecureRandomIdentifierGenerator idGenerator;
-
- /** For resolving attributes. */
- private AttributeResolver resolver;
-
- /** To determine releasable attributes. */
- private FilteringEngine engine;
-
- /**
- * Default constructor.
- */
- public AbstractProfileHandler() {
- builderFactory = Configuration.getBuilderFactory();
- idGenerator = new SecureRandomIdentifierGenerator();
- }
-
- /**
- * Returns the XML builder factory.
- *
- * @return Returns the builderFactory.
- */
- public XMLObjectBuilderFactory getBuilderFactory() {
- return builderFactory;
- }
-
- /**
- * Returns the id generator.
- *
- * @return Returns the idGenerator.
- */
- public SecureRandomIdentifierGenerator getIdGenerator() {
- return idGenerator;
- }
-
- /**
- * Sets the attribute resolver.
- *
- * @param r <code>AttributeResolver</code>
- */
- public void setAttributeResolver(AttributeResolver r) {
- resolver = r;
- }
-
- /**
- * Returns the attribute resolver.
- *
- * @return <code>AttributeResolver</code>
- */
- public AttributeResolver getAttributeResolver() {
- return resolver;
- }
-
- /**
- * Sets the filter engine.
- *
- * @param e <code>FilterEngine</code>
- */
- public void setFilterEngine(FilteringEngine e) {
- engine = e;
- }
-
- /**
- * Returns the filter engine.
- *
- * @return <code>FilterEngine</code>
- */
- public FilteringEngine getFilteringEngine() {
- return engine;
- }
-
- /**
- * This decodes the attribute query message from the supplied request.
- *
- * @param request <code>ServletRequest</code>
- * @return <code>SAMLObject</code>
- * @throws BindingException if the request cannot be decoded
- */
- protected SAMLObject decodeMessage(ServletRequest request) throws BindingException {
- // call decode method on decoder
- decoder.setRequest(request);
- decoder.decode();
- if (log.isDebugEnabled()) {
- log.debug("decoded servlet request");
- }
-
- // get SAMLMessage from the decoder
- final SAMLObject message = decoder.getSAMLMessage();
- if (log.isDebugEnabled()) {
- log.debug("retrieved attribute query message from decoder: " + message);
- }
-
- return message;
- }
-
-
- /**
- * This encodes the supplied response.
- *
- * @param response <code>SAMLObject</code>
- * @throws BindingException if the response cannot be encoded
- */
- protected void encodeResponse(SAMLObject response) throws BindingException {
- encoder.setSAMLMessage(response);
- encoder.encode();
- if (log.isDebugEnabled()) {
- log.debug("encoded saml1 response");
- }
- }
-}
--- /dev/null
+/*
+ * Copyright [2007] [University Corporation for Advanced Internet Development, Inc.]
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package edu.internet2.middleware.shibboleth.idp.profile.saml1;
+
+import org.apache.log4j.Logger;
+import org.opensaml.Configuration;
+import org.opensaml.common.SAMLVersion;
+import org.opensaml.common.impl.SecureRandomIdentifierGenerator;
+import org.opensaml.xml.XMLObjectBuilderFactory;
+
+import edu.internet2.middleware.shibboleth.idp.profile.AbstractSAMLProfileHandler;
+
+/**
+ * Common implementation details for profile handlers.
+ */
+public abstract class AbstractSAML1ProfileHandler extends AbstractSAMLProfileHandler {
+
+ /** SAML Version for this profile handler. */
+ public static final SAMLVersion SAML_VERSION = SAMLVersion.VERSION_11;
+
+ /** Class logger. */
+ private static Logger log = Logger.getLogger(AbstractSAML1ProfileHandler.class);
+
+ /** For building XML. */
+ private XMLObjectBuilderFactory builderFactory;
+
+ /** For generating random ids. */
+ private SecureRandomIdentifierGenerator idGenerator;
+
+ /**
+ * Default constructor.
+ */
+ public AbstractSAML1ProfileHandler() {
+ builderFactory = Configuration.getBuilderFactory();
+ idGenerator = new SecureRandomIdentifierGenerator();
+ }
+
+ /**
+ * Returns the XML builder factory.
+ *
+ * @return Returns the builderFactory.
+ */
+ public XMLObjectBuilderFactory getBuilderFactory() {
+ return builderFactory;
+ }
+
+ /**
+ * Returns the id generator.
+ *
+ * @return Returns the idGenerator.
+ */
+ public SecureRandomIdentifierGenerator getIdGenerator() {
+ return idGenerator;
+ }
+}
\ No newline at end of file
import javax.servlet.ServletException;
-import edu.internet2.middleware.shibboleth.common.profile.ProfileHandler;
import edu.internet2.middleware.shibboleth.common.profile.ProfileRequest;
import edu.internet2.middleware.shibboleth.common.profile.ProfileResponse;
/**
* SAML 1 Artifact Query profile handler.
*/
-public class ArtifactQuery implements ProfileHandler {
+public class ArtifactQuery extends AbstractSAML1ProfileHandler {
/** {@inheritDoc} */
public boolean processRequest(ProfileRequest request, ProfileResponse response) throws ServletException {
/**
* SAML 1 Attribute Query profile handler.
*/
-public class AttributeQuery extends AbstractProfileHandler {
+public class AttributeQuery extends AbstractSAML1ProfileHandler {
/** Class logger. */
private static Logger log = Logger.getLogger(AttributeQuery.class);
/**
* Metadata Exception. Generally thrown by a
- * {@link edu.internet2.middleware.shibboleth.common.profile.ProfileHandler}
+ * {@link edu.internet2.middleware.shibboleth.common.profile.AbstractProfileHandler}
* if unable ot locate needed metadata.
*/
public class MetadataException extends java.lang.Exception {
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
-import edu.internet2.middleware.shibboleth.common.profile.ProfileHandler;
import edu.internet2.middleware.shibboleth.common.relyingparty.RelyingPartyConfiguration;
-import edu.internet2.middleware.shibboleth.common.relyingparty.RelyingPartyManager;
+import edu.internet2.middleware.shibboleth.common.relyingparty.RelyingPartyConfigurationManager;
import edu.internet2.middleware.shibboleth.common.relyingparty.saml1.ShibbolethSSOConfiguration;
import edu.internet2.middleware.shibboleth.idp.authn.LoginContext;
*
* This profile implements the SSO profile from "Shibboleth Architecture Protocols and Profiles" - 10 September 2005.
*/
-public class ShibbolethSSO extends AbstractProfileHandler {
+public class ShibbolethSSO extends AbstractSAML1ProfileHandler {
/** log4j. */
private static final Logger log = Logger.getLogger(ShibbolethSSO.class);
protected static final String RP_COOKIE_DIGEST_ALG = "SHA-1";
/** The RelyingPartyManager. */
- protected RelyingPartyManager rpManager;
+ protected RelyingPartyConfigurationManager rpManager;
/**
* Backing store for artifacts. This must be shared between ShibbolethSSO and AttributeQuery.
*
* @param rpManager A RelyingPartyManager.
*/
- public void setRelyingPartyManager(RelyingPartyManager rpManager) {
+ public void setRelyingPartyManager(RelyingPartyConfigurationManager rpManager) {
this.rpManager = rpManager;
}
import org.opensaml.xml.XMLObjectBuilder;
import org.opensaml.xml.XMLObjectBuilderFactory;
-import edu.internet2.middleware.shibboleth.common.profile.ProfileHandler;
-import edu.internet2.middleware.shibboleth.common.relyingparty.RelyingPartyManager;
+import edu.internet2.middleware.shibboleth.idp.profile.AbstractSAMLProfileHandler;
/**
* Common implementation details for profile handlers.
*/
-public abstract class AbstractProfileHandler implements ProfileHandler {
+public abstract class AbstractSAML2ProfileHandler extends AbstractSAMLProfileHandler {
/** SAML Version for this profile handler. */
public static final SAMLVersion SAML_VERSION = SAMLVersion.VERSION_20;
/** Class logger. */
- private static Logger log = Logger.getLogger(AbstractProfileHandler.class);
+ private static Logger log = Logger.getLogger(AbstractSAML2ProfileHandler.class);
/** For building XML. */
private XMLObjectBuilderFactory builderFactory;
/**
* Default constructor.
*/
- public AbstractProfileHandler() {
+ public AbstractSAML2ProfileHandler() {
builderFactory = Configuration.getBuilderFactory();
idGenerator = new SecureRandomIdentifierGenerator();
import javax.servlet.ServletException;
-import edu.internet2.middleware.shibboleth.common.profile.ProfileHandler;
import edu.internet2.middleware.shibboleth.common.profile.ProfileRequest;
import edu.internet2.middleware.shibboleth.common.profile.ProfileResponse;
/**
* SAML 2.0 Artifact resolution profile handler.
*/
-public class ArtifactResolution implements ProfileHandler {
+public class ArtifactResolution extends AbstractSAML2ProfileHandler {
/** {@inheritDoc} */
public boolean processRequest(ProfileRequest request, ProfileResponse response) throws ServletException {
/**
* SAML 2.0 Attribute Query profile handler.
*/
-public class AttributeQuery extends AbstractProfileHandler {
+public class AttributeQuery extends AbstractSAML2ProfileHandler {
/** Class logger. */
private static Logger log = Logger.getLogger(AttributeQuery.class);
import edu.internet2.middleware.shibboleth.common.profile.ProfileRequest;
import edu.internet2.middleware.shibboleth.common.profile.ProfileResponse;
import edu.internet2.middleware.shibboleth.common.relyingparty.RelyingPartyConfiguration;
-import edu.internet2.middleware.shibboleth.common.relyingparty.RelyingPartyManager;
+import edu.internet2.middleware.shibboleth.common.relyingparty.RelyingPartyConfigurationManager;
import edu.internet2.middleware.shibboleth.common.relyingparty.saml2.SSOConfiguration;
import edu.internet2.middleware.shibboleth.idp.authn.AuthenticationManager;
import edu.internet2.middleware.shibboleth.idp.authn.LoginContext;
/**
* SAML 2.0 Authentication Request profile handler
*/
-public class AuthenticationRequest extends AbstractProfileHandler {
+public class AuthenticationRequest extends AbstractSAML2ProfileHandler {
private static final Logger log = Logger.getLogger(AuthenticationRequest.class.getName());
public static final String SAML20_PROTOCOL_URI = "urn:oasis:names:tc:SAML:2.0:protocol";
/** The RelyingPartyManager. */
- protected RelyingPartyManager rpManager;
+ protected RelyingPartyConfigurationManager rpManager;
/**
* Backing store for artifacts. This must be shared between ShibbolethSSO and AttributeQuery.
*
* @param rpManager The IdP's RelyingParyManager.
*/
- public void setRelyingPartyManager(RelyingPartyManager rpManager) {
+ public void setRelyingPartyManager(RelyingPartyConfigurationManager rpManager) {
this.rpManager = rpManager;
}
import javax.servlet.ServletException;
-import edu.internet2.middleware.shibboleth.common.profile.ProfileHandler;
import edu.internet2.middleware.shibboleth.common.profile.ProfileRequest;
import edu.internet2.middleware.shibboleth.common.profile.ProfileResponse;
/**
* SAML 2.0 Logout Request profile handler.
*/
-public class LogoutRequest implements ProfileHandler {
+public class LogoutRequest extends AbstractSAML2ProfileHandler {
/** {@inheritDoc} */
public boolean processRequest(ProfileRequest request, ProfileResponse response) throws ServletException {