Marcel Stör wrote:
Requirement:
a) /myapp authenticated against AD for all users with Windows authentication
b) /myapp/API authenticated against AD for /one/ user with basic-auth

The plan was to have two sites in IIS with appropriate authentication schemes. They both have a 'jakarata' virtual directory pointing to one and the same physical path (DLL etc.). Then we wanted to alter the security settings on the directory excluding all but one user for requirement b). Since this modifies the security settings of the physical folder we'd have to install the IIS Tomcat connector a second time pointing to the same AJP port (one Tomcat instance).

Should this work in general?
Are there better alternatives to implement the given requirements?


You are not really saying at which level you are doing this authentication (IIS or Tomcat), but I will assume you do it at the IIS level, and set tomcatAuthentication="false" in the Tomcat AJP Connector.

The first thing I would like to point out is that your (b) mechanism may not be applicable in some environments, as it may not be allowed by the network security policies, and the browsers may not even be /allowed/ to do Basic authentication. You should maybe check that first with the network admins.

My second question would be "why 2 sites ?". Does IIS not allow you to specify authentication requirements on a per-location base inside the same "site" ? Normally, in decent webservers (like Apache httpd and Tomcat ;-)), the longest matching path "wins", so for a request pointing to "/myapp/API", the specification in "/myapp/API" should be applied, and not the one for "/myapp".
You should not need 2 sites, nor two connectors, for this.

You have also not really explained why you want to do Basic auth for "/myapp/API". I suspect that it is because this URL would be accessed by some client other than a browser, and this client is not able to do NTLM auth. It may help to confirm this.

In a spirit of widening your scope of investigation, you may also want to have a look at having your client access Tomcat's "/myapp/API" directly (bypassing IIS), and in that case do the AD authentication at the Tomcat level, using Tomcat's SPNEGO authentication Valve, or Waffle or Jespa (commercial). Jespa for instance provides ample possibilities to try NTLM/SPNEGO first, and if it doesn't work fall back to Basic auth (still with an AD back-end). This scheme would even work via IIS and AJP, if you tell IIS to not authenticate for "/myapp/API" and proxy the call to Tomcat anyway, letting Tomcat do the authentication.

In summary, there are probably several ways to do this, depending on your exact circumstances/requirements. The more details you provide though, the better people on this list may be able to help you.


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

Reply via email to