tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From André Warnier (tomcat)>
Subject Re: Mixed authentication
Date Tue, 18 Oct 2016 09:56:24 GMT
On 18.10.2016 08:34, Brugnerotto Angélique wrote:
> -----Message d'origine-----
> De : André Warnier (tomcat) []
> Envoyé : lundi, 17 octobre 2016 13:54
> À :
> Objet : Re: Mixed authentication
> On 17.10.2016 11:51, Brugnerotto Angélique wrote:
>> Good morning everybody.
>> We use Tomcat 6 for an internal web site.
>> Actually, the authentication is negociate with SSO. It works fine. When we access
the web site, the Windows authentication of the Windows session Windows is resumed.
>> We would like to publish this site in external.
>> We have problems with negociate authentification.
>> We have tried to put the mixed authentication with Form authentification.
>> It works but the problem is that when we access the site, we have a page with a form
and 2 choices :
>>      - Put the username/password
>>     - A button to use Windows authentication We have followed this
>> tutorial :
>> What we would like to do is that the web site tries automatically to do a negociate
authentication and only if it can't, to show a form. We don't find how to do this. Is it possible
? Can you help us ?
> Hello Angélique.
> What you are trying to do may be difficult, even impossible.
> One problem is that the browser will not even *try* Windows Integrated Authentication,
if the workstation where it runs is not part of the same domain as the server (or at least
a "trusted" server).
> (That is for security reasons, as WIA is only deemed "safe" within the same domain).
> So the browser will then (probably, depending on how the PC and the server are set up)
automatically revert to HTTP Basic authentication (meaning that the browser built-in login
popup dialog will appear).
> But that is not "form authentication".
> Note that one of the comments on the page which you mention above, says pretty much the
same thing : see " Atdavie . 4 years ago "
> (Full link :
> The whole issue is fairly complex, and has to do with discrepancies between what the
HTTP protocol foresees or not as valid authentication methods (of which "form" is not one),
and how the Windows (Microsoft-specific) authentication works.
> I would suggest that you stay with your current solution, it is the simplest one.
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:
> For additional commands, e-mail:
> Good morning,
> Thank you for the answer.
> Our workstation are on the same domain as the server. In internal, it's not possible
to automatticaly do a Windows authentification on Tomcat ? And only in external, show a form
to insert username and password ?
> The actual solution does not satisfies us :-(

What you want to achieve, in general, is perfectly possible. But it is your context "in 
Tomcat" which is slightly off the mark.
You will probably not be able to achieve what you want, just by changing some parameters 
in the Tomcat configuration; you have to look at the whole architecture.
(In other words : this is not a Tomcat-specific issue; you would have the same problem 
with any webserver).

The fundamental issue is : once you start a Windows authentication between a browser and a

client, you cannot "cleanly step back" if it does not work, and restart a form-based 
authentication. There is just no mechanism available for doing this cleanly and reliably,

either in the HTTP protocol, or in the way in which standard browsers are built.
(In other words again : the WIA authentication is a multi-step process, with a series of 
exchanges between the browser and the server. But once you have started it, there are only

2 ways in which it can end : it either succeeds and you are logged-in, or it fails and the

browser gets back a "forbidden" HTTP status. There is no "in-between" foreseen in the 
protocols, so even if you managed to make it work in some limited cases, it would always 
fail in some other cases.)

So you have to do the distinction earlier in the process, and then *either* start a 
Windows authentication, *or* start a form-based authentication.

One way to do this, would be to have a "filter", very soon in the process, which would 
check the IP address of the client, and determine if it is "internal" or "external", and 
then redirect (or forward) the call to one of 2 *separate* applications :
- one protected by a Windows authentication
- one protected by a form-based authentication
(That the code of these 2 applications could be exactly identical, is a separate issue).

There are different ways to do this, depending on your infrastructure and what you feel 
comfortable with.
For example, you could set up a front-end Apache httpd server to do the user 
authentication, and then forward an already-authenticated request to a back-end Tomcat.
Or, you might be able to do this directly in Tomcat, by using the URLRewrite filter/valve.
(I do not really know about this one; I know that it can do a lot of things, but I have 
never tried it for such a case).
See here :

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message