IIS 是否同时支持 HTTP 基本身份验证和表单身份验证?

IIS 是否同时支持 HTTP 基本身份验证和表单身份验证?

前言:我是一名 Web 开发人员,对 Apache 服务器非常了解,但对 IIS 或 .NET 了解甚少

我与一位开发人员合作,他一直在回避向运行 IIS 的临时服务器添加基本身份验证的请求。今天他终于添加了它,但添加了消息

IIS 不允许您同时使用基本身份验证和表单身份验证。

我通过安装第三方进程解决了这个问题,该进程允许您在 iis 模块前面使用 .htaccess / apache 模块。

根据请求,它会占用更多资源,但对于分阶段而言,这并不是至关重要的。

我的问题是(因为这个解释与我所了解的关于网络应用程序和责任分离的一切相悖)IIS 怎么可能阻止在使用自定义表单身份验证的网站上使用基本身份验证?

答案1

基本身份验证是一个通常指 HTTP 协议内的身份验证的术语。

基于表单的身份验证在基于 Web 的应用程序环境中处理。这通常涉及使用 cookie 设置某种会话标识符的表单,然后在处理表单时,服务器端会将有关用户状态的信息与该会话相关联。

基于表单的身份验证(基本上通过会话 cookie 进行跟踪)和基于 HTTP 的身份验证(实际上直接在 HTTP 标头内)之间实际上没有任何直接关系。

IIS 如何可能阻止在使用自定义表单身份验证的网站上使用基本身份验证?

这与 IIS 阻止基本身份验证无关,而是与两者不兼容有关。如果您使用表单进行初始身份验证,则相关的登录状态将存储在会话中。但处理基本身份验证的软件通常对 cookie 或会话一无所知,它所知道的只是 HTTP 身份验证。当您让 IIS 执行身份验证主干时,身份验证甚至在您的应用程序被触及之前就发生了。

如果您使用 IIS 的内置功能进行基本身份验证,那么您基本上只需要使用它。

但是,通过让您的应用程序发送和解析正确的 HTTP 标头,应该可以在您的应用程序中实现 HTTP 身份验证。为此,您可以将 IIS 设置为基于表单的身份验证,然后您只需在应用程序中执行所有操作即可。这样,您的应用程序就可以根据会话状态发送正确的标头。

相关内容