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

标签 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 进行身份验证就可以了。
+ .NET 客户端访问 IIS 无法使用相同的 unpw 进行身份验证。

Fiddler 报告此 session :
HTTP/1.1 401 未经授权
日期:2009 年 1 月 7 日星期三 14:31:59 GMT
服务器:Microsoft-IIS/6.0
WWW-验证:NTLM
X-Powered-By: ASP.NET
Pragma:无缓存
缓存控制:无缓存
过期时间:美国东部时间 1969 年 12 月 31 日星期三 19:00:00
WWW-Authenticate: Basic realm="日常控制模块"
内容类型:text/html;charset=utf-8
内容长度:954
代理支持:基于 session 的身份验证

它启动了一个看起来像基本身份验证对话框的东西,但它没有要求我们对 Daily Control Module 进行身份验证,而是要求我们对 Windows 服务器进行身份验证。果然,IIS 服务器正在请求 NTLM 身份验证。如果我将整个服务器设置为使用 Basic Auth,我会从 Fiddler 获得:
HTTP/1.1 401 未经授权
内容长度:1656
内容类型:文本/html
服务器:Microsoft-IIS/6.0
WWW-Authenticate: Basic realm="serverName"
X-Powered-By: ASP.NET
日期:2009 年 1 月 7 日星期三 15:08:32 GMT

叹息。 Basic,不过现在Basic Realm改成了IIS服务器。所以,如果我将整个服务器设置为针对基本领域、日常控制模块进行身份验证,那么我会得到:
HTTP/1.1 401 未经授权
日期:2009 年 1 月 7 日星期三 15:11:45 GMT
服务器:Microsoft-IIS/6.0
WWW-Authenticate: Basic realm="日常控制模块"
X-Powered-By: ASP.NET
Pragma:无缓存
缓存控制:无缓存
过期时间:美国东部时间 1969 年 12 月 31 日星期三 19:00:00
WWW-Authenticate: Basic realm="日常控制模块"
内容类型:text/html;charset=utf-8
内容长度:954

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

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

感谢观看。

最佳答案

目录安全的配置是什么?

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

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

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

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

关于iis - 无法让 IIS ISAPI Tomcat 连接器将 BASIC 身份验证传递给 Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/420693/

相关文章:

php - 在 IIS 5.1 中安装 PHP

IIS服务器版本兼容性

url - 通过 IIS URL 重写模块删除 URL 的特定部分

c# - 绝对 URL 不适用于虚拟目录?

android - Flutter:如何处理需要身份验证的屏幕?

java - 使用 RestTemplate 的 Spring Security 身份验证

angularjs - Node 中的错误 : 401 (Unauthorized) , Passport 身份验证

javascript - javax.el.E​​LException : Failed to parse the expression [${ofn:storeLookup(${bundleDetailsMap ['bundleStoreUnit' ]})}] 异常

java - 下载servlet很慢

java - Netbeans Servlet