I wonder where the mechanism to invoke the login window with user/pwd for authentication is located, and how to turn it off ? I have a proxy-based authentication in a server in front of my Tomcat, so the user is already authenticated when the request reaches Tomcat.
- I have a small valve class like in the snippet below which catches the username and rolename from the http-header and stores it in ThreadLocal<String> so that my LoginModule can populate the subject-principal structure correctly, for JAAS-like role-based authorization. - I have a modified JAASRealm (subclassed) which uses a dummy EmptyCallbackHandler instead of JAASCallbackHandler. The EmptyCallbackhandler is never called in LoginModule.login(). - login-config in web.xml is set to BASIC. I understand that the login window is invoked just after the chain of valves are passed, correct ? How do I stop the login window from being invoked ? Can that be done in my valve class ? I have looked into the code of AuthenticatorBase, SingleSignOn, BasicAuthenticator, and NonLoginAuthenticator but yet no success of using that code. Tomcat 6.0.20 is used. Johan -- snip --- public class AuthValve extends ValveBase { public AuthValve() { } @Override public void event(Request arg0, Response arg1, CometEvent arg2) throws IOException, ServletException { } @Override public String getInfo() { return "This is the AuthValve"; } @Override public Valve getNext() { return super.getNext(); } @Override public void invoke(Request request, Response response) throws IOException, ServletException { System.out.println("valve.invoke() thread: " + Thread.currentThread().getName()); String username = request.getHeader("h_name"); String rolename = request.getHeader("h_role"); System.out.println("valve.invoke() name:<" + username + "> role:<" + rolename + ">"); /* * Store info for LoginModule... */ NameStore.setName(username); RoleStore.setRole(rolename); getNext().invoke(request,response); } } -- end snip ---