package org.josso.jetty6.agent; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.josso.agent.*; import org.josso.agent.http.HttpSSOAgent; import org.josso.agent.http.WebAccessControlUtil; import org.josso.servlet.agent.GenericServletLocalSession; import org.josso.servlet.agent.GenericServletSSOAgentRequest; import org.mortbay.jetty.Request; import org.mortbay.jetty.Response; import org.mortbay.jetty.handler.AbstractHandler; import org.mortbay.jetty.handler.ContextHandler; import org.mortbay.jetty.security.Authenticator; import org.mortbay.jetty.security.UserRealm; import org.mortbay.jetty.servlet.Context; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; import java.security.Principal; import java.util.Collections; import java.util.HashMap; import java.util.Map; public class JOSSOAuthenticator implements Authenticator { private static final Log log = LogFactory.getLog(JOSSOAuthenticator.class); public static final String KEY_SESSION_MAP = "org.josso.jetty6.agent.sessionMap"; public static final String LAZY_STARTUP ="lazy"; /** * One agent instance for all applications. */ protected HttpSSOAgent agent; protected void init() throws IOException { try { Lookup lookup = Lookup.getInstance(); lookup.init("josso-agent-config.xml"); // For spring compatibility ... // We need at least an abstract SSO Agent agent = (HttpSSOAgent) lookup.lookupSSOAgent(); if (log.isDebugEnabled()) agent.setDebug(1); agent.start(); } catch (Exception e) { throw new IOException("Error starting SSO Agent : " + e.getMessage(), e); } } public Principal authenticate(UserRealm userRealm, String s, Request request, Response response) throws IOException { init(); HttpServletRequest hreq = (HttpServletRequest) request; HttpServletResponse hres = (HttpServletResponse) response; Request baseRequest=(request instanceof Request)?(Request)request:null; String contextPath = getContextPath(request); log.debug("Request is " + request); log.debug("Response is " + response); log.debug("Session is " + request.getSession(true)); return null; } public String getAuthMethod() { return HttpServletRequest.FORM_AUTH; } private String getContextPath(HttpServletRequest req) { String path = req.getPathInfo(); String contextPath = null; if (!path.substring(1).contains("/")) { contextPath = path; } else { contextPath = path.substring(0, path.substring(1).indexOf("/") + 1); } return contextPath; } }