IIS是否同时支持HTTP基本authentication和表单authentication?

前言:我是一个非常了解apache服务器的web开发人员,但是我对IIS或.NET知之甚less

我和一位开发人员一起工作,他们已经避免了将基本身份validation添加到运行IIS的登台服务器一段时间的请求。 他今天终于补充说,但是加了一条消息

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

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

要求更多的资源密集型,但是升级并不重要。

我的问题是(因为这个解释在面对我所知道的有关web应用程序和责任分离的所有方面都是飞快的),那么IIS怎么可能阻止在使用自定义表单validation的网站上使用基本validation呢?

基本authentication是一个通常指HTTP协议内的authentication的术语。

基于表单的身份validation是在基于Web的应用程序的上下文中处理的。 这通常涉及一种用cookie设置某种会话标识符的表单,然后当表单处理信息与服务器端关于用户状态的那个会话相关联时。

基本上通过会话cookie跟踪的基于表单的authentication与实际上直接在HTTP标头内的基于HTTP的authentication之间没有任何直接的关系。

IIS如何防止在使用自定义表单validation的网站上使用基本身份validation?

它与IIS防止基本身份validation无关,它与两个不兼容。 如果您使用表单进行初始身份validation,则关联的login状态将存储在会话中。 但是,处理基本身份validation的软件通常不知道有关cookie或会话的信息,只知道HTTP身份validation。 当您让IIS执行身份validation干涉时,身份validation发生在您的应用程序甚至被触摸之前。

如果您使用IIS的内置设施进行基本身份validation,那么您基本上只能使用它。

但是,通过让应用程序发送并parsing正确的HTTP标头,应该可以在您的应用程序中实现HTTP身份validation。 为此,您将IIS设置为基于表单的身份validation,然后在应用程序中完成所有操作。 这样,应用程序就可以根据会话状态发送适当的头文件。