wif表单身份验证甚至可以重定向匿名用户

时间:2012-11-08 21:55:06

标签: .net redirect forms-authentication wif

我有一个使用Forms身份验证的Web应用程序。我有一个页面,我不想重定向到登录表单。我有这个页面:

<location path="service1.svc">
  <system.web>
    <authorization>
      <allow users="?"/>
    </authorization>
  </system.web>
</location>

根据我的理解,如果用户未经过身份验证(匿名)并且他们尝试访问page1.svc,那么他们就不会被重定向到登录页面,但在我的应用程序中他们仍然是。

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:0)

我明白了! Forms-authentication模块的工作方式是它检查EndRequest方法中的任何传出响应,如果状态代码是401(未授权),则它将状态代码更改为320并将其重定向到Login Page。在我的情况下发生的事情是我有一个单独的模块在form-auth页面获取它之前操纵响应并偶尔将状态代码设置为401以启动ntlm身份验证交换。但是,在交换可能发生之前,form-auth拦截了它。

解决方法是使用global.aspx文件中的EndRequest方法将状态代码设置回401,因为forms-auth已经在这一点上操作了它。在我的情况下,不是首先将状态代码设置为401,而是将其设置为407,然后在endRequest方法中捕获它,将其更改回401并避免使用forms-auth模块。