Remon Sadikni wrote:
Dear Tomcat developers and users,

I managed to restrict a web application by IP-adress with RemoteAddrValve and to restrict another one by basic authentication. Now I would like to restrict the same web application by both methods: - If the user is inside a specific network (e.g. 134.134.*.*), then he should get direct access to the web application (without login window). - If he is outside this network he has to authenticate via username / password. I tried to combine RemoteAddrValve und basic authentication, but I only managed an "AND" conjunction. What I want is a disjunctive combination ("OR") of these 2 methods . How can I do that?

Hi.

Those 2 things do not happen at the same time.
The Valve executes first, and it either blocks the request totally, or lets it through unchanged.
Then, if the Valve let the request pass through, comes the 
authentication/authorization logic.
But by then of course it is too late, because if the request was blocked by the Valve, it will not even make it to the AA stage.

What you could do, is write a custom Valve. This Valve would have to check the client IP address, and if it matches the "specific network", it should "pre-authenticate" the request, using some dummy user-id (like "internal_user") before it forwards the request.

I am not sure how easy that is however, since I do not know if Tomcat's Basic Authentication mechanism /always/ checks the "Authorization:" header first, or if it first checks if the request has already a UserPrincipal assigned to it.

(Gurus, please fill in here : ........ )

If the Valve needs to add an "Authorization:" header to the request, then you are in for a bit more complexity.

This would be a case where I would handle the problem at the level of a front-end Apache httpd, where such things are easier (for me) by an order of magnitude. I even happen to have written an Apache/mod_perl module which does exactly what you want, and more.

You may also want to have a look at SecurityFilter, which could well be an easier way for you (http://securityfilter.sourceforge.net/) I do not think that it has provisions for "automatically" authenticating a user based on his client IP address, but it may be easier to just add the required code there.




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to