1

我们已经使用 isapi_redirect.dll 成功地将 IIS 配置为前置 2 个 Tomcat 实例。它做的每件事都很聪明,我们很高兴。然而,现在我们使用其中一个 Tomcat 实例通过 AXIS 提供 Web 服务。这需要 BASIC Auth,并且 .NET 客户端失败。
+ .NET 客户端可以通过浏览到“site:8180”绕过 IIS,它们很好
+ Java 客户端可以访问 IIS,ISAPI 将它们通过,它们使用基本的身份验证就可以了。
+ 命中 IIS 的 .NET 客户端无法使用相同的 unpw 进行身份验证。

Fiddler 报告此会话:
HTTP/1.1 401 未经授权
日期:2009 年 1 月 7 日星期三 14:31:59 GMT
服务器:Microsoft-IIS/6.0
WWW-Authenticate:NTLM
X-Powered-By:ASP.NET
Pragma:No-cache
Cache -控制:无缓存
过期:星期三,1969 年 12 月 31 日 19:00:00 EST
WWW-认证:基本领域 =“每日控制模块”
内容类型:文本/html;字符集 = utf-8
内容长度:954
代理-支持:基于会话的身份验证

它启动了一个看起来像基本身份验证对话框的内容,但它不是要求我们针对 Daily Control Module 进行身份验证,而是要求我们针对 Windows 服务器进行身份验证。果然,IIS 服务器要求 N​​TLM 身份验证。如果我将整个服务器设置为使用基本身份验证,我会从 Fiddler 得到这个:
HTTP/1.1 401 Unauthorized
Content-Length: 1656
Content-Type: text/html
Server: Microsoft-IIS/6.0
WWW-Authenticate: Basic realm="serverName "
X-Powered-By:ASP.NET
日期:2009 年 1 月 7 日,星期三,格林威治标准时间 15:08:32

叹。Basic,但现在Basic Realm 更改为IIS 服务器。因此,如果我将整个服务器设置为针对基本领域、日常控制模块进行身份验证,那么我会得到:
HTTP/1.1 401 Unauthorized
Date: Wed, 07 Jan 2009 15:11:45 GMT
服务器:Microsoft-IIS/6.0
WWW-验证:基本领域 =“每日控制模块”
X-Powered-By:ASP.NET
编译指示:无缓存
缓存控制:无缓存
过期:星期三,1969 年 12 月 31 日 19:00:00 EST
WWW-验证:基本领域="日控模块"
Content-Type: text/html;charset=utf-8
Content-Length: 954

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

此时:
+ Anon 关闭
+ Integrated Windows Auth 关闭
+ Basic auth 开启,realm 配置为 Daily Control Module

感谢您的关注。

4

1 回答 1

1

目录安全的配置是什么?

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

另一点是。也许在 iis 级别您应该​​使用匿名身份验证。而tomcat负责实现基本身份验证交换?

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

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

于 2009-01-07T19:56:10.337 回答