无法让IIS ISAPI Tomcat连接器将BASIC身份验证传递给Tomcat

时间:2009-01-07 15:18:17

标签: iis authentication tomcat isapi-redirect

我们已使用isapi_redirect.dll成功将IIS配置为前2个Tomcat实例。它巧妙地做了一切,我们非常高兴。但是,现在我们正在使用其中一个Tomcat实例通过AXIS提供Web服务。这需要BASIC Auth,.NET客户端失败 + .NET客户端可以通过浏览“site:8180”来绕过IIS,它们很好 + Java客户端可以访问IIS并且ISAPI传递它们,并且它们使用basic进行身份验证 命中IIS的+ .NET客户端无法使用相同的unpw进行身份验证。

Fiddler报告此次会议:
    HTTP / 1.1 401未经授权
    日期:2009年1月7日星期三格林威治标准时间14:31:59     服务器:Microsoft-IIS / 6.0
    WWW-Authenticate:NTLM
    X-Powered-By:ASP.NET
    Pragma:No-cache
    缓存控制:无缓存
    到期日:1969年12月31日星期三19:00:00 EST     WWW-Authenticate:Basic realm =“Daily Control Module”
    Content-Type:text / html; charset = utf-8
    内容长度:954
    代理支持:基于会话的身份验证

它启动了看起来像基本身份验证对话框,但它没有要求我们对每日控制模块进行身份验证,而是要求我们对Windows服务器进行身份验证。果然,IIS服务器要求NTLM身份验证。如果我将整个服务器设置为使用Basic Auth,我会从Fiddler那里得到这个:
    HTTP / 1.1 401未经授权
    内容长度:1656
    内容类型:text / html
    服务器:Microsoft-IIS / 6.0
    WWW-Authenticate:Basic realm =“serverName”
    X-Powered-By:ASP.NET
    日期:2009年1月7日星期三15:08:32 GMT

叹息。基本,但现在Basic Realm已更改为IIS服务器。因此,如果我将整个服务器设置为针对Basic领域,每日控制模块进行身份验证,那么我得到这个:
    HTTP / 1.1 401未经授权
    日期:2009年1月7日星期三格林尼治标准时间15:11:45     服务器:Microsoft-IIS / 6.0
    WWW-Authenticate:Basic realm =“Daily Control Module”
    X-Powered-By:ASP.NET
    Pragma:No-cache
    缓存控制:无缓存
    到期日:1969年12月31日星期三19:00:00 EST     WWW-Authenticate:Basic realm =“Daily Control Module”
    Content-Type:text / html; charset = utf-8
    内容长度:954

双WWW-Auth标头很奇怪,不是吗?无论如何,使用直接对Tomcat工作的相同unpw进行身份验证失败,无论我是否指定域。

此时:
+ Anon已关闭 +集成Windows身份验证已关闭 +基本身份验证为开启,将域配置为每日控制模块

谢谢你的期待。

1 个答案:

答案 0 :(得分:1)

目录安全性的配置是什么?

您确定只启用了基本身份验证吗?

其他方面是。也许在iis级别,您应该使用匿名身份验证。 tomcat是否正在实施基本的身份验证交换?

问题的根源(来自您发布的标题)是.net客户端认识到该站点支持ntlm身份验证。并尝试使用该协议进行身份验证。 java客户端只是忽略了ntlm选项,因此它使用该站点支持的任何其他身份验证协议。

您应确保未在站点和文件级别启用集成身份验证。