package org.javaee7.jaspic.jaccpropagation.servlet; import static org.javaee7.jaspic.jaccpropagation.jacc.JACC.getSubject; import static org.javaee7.jaspic.jaccpropagation.jacc.JACC.hasAccess; import java.io.IOException; import javax.security.auth.Subject; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * * @author Arjan Tijms * */ @WebServlet(urlPatterns = "/public/servlet") public class PublicServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Obtain the active subject via a JACC policy handler Subject subject = getSubject(); if (subject == null) { response.getWriter().write("Can't get Subject. JACC doesn't seem to be available."); return; } // Check with JACC if the caller has access to this Servlet. As we're // currently in this very Servlet and it's a public Servlet,the answer can't be anything // than "true". response.getWriter().write("Has access to /public/servlet: " + hasAccess("/public/servlet", subject)); // Check with JACC if the caller has access to another (protected) Servlet. If JACC // works correctly and we're authenticated this should be true. response.getWriter().write( "\nHas access to /protected/servlet: " + hasAccess("/protected/servlet", subject)); } }