package org.surfnet.oaaas.cas; import org.surfnet.oaaas.auth.AbstractAuthenticator; import org.surfnet.oaaas.auth.principal.AuthenticatedPrincipal; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * Created by bourges on 05/08/14. */ public class CasAuthenticator extends AbstractAuthenticator { @Override public boolean canCommence(HttpServletRequest request) { return getAuthStateValue(request) != null; } @Override public void authenticate(HttpServletRequest request, HttpServletResponse response, FilterChain chain, String authStateValue, String returnUri) throws IOException, ServletException { CasUser casUser = (CasUser) request.getSession().getAttribute(PostCasAuthenticationFilter.POST_CAS_AUTHENTICATION_INFO); if (casUser == null) { String uri = request.getRequestURI(); String queryString = request.getQueryString(); request.getSession().setAttribute(PostCasAuthenticationFilter.REDIRECT_URL, uri + "?" + queryString); response.sendRedirect("/cas"); return; } else { AuthenticatedPrincipal principal = new AuthenticatedPrincipal(casUser.getUid()); principal.setAdminPrincipal(casUser.isAdmin); super.setPrincipal(request, principal); super.setAuthStateValue(request, authStateValue); chain.doFilter(request, response); } } }