如何防止混合验证Web应用程序中的WinLogin页面上的表单身份验证重定向



我正在尝试为我的Web应用程序使用混合身份验证。我正在使用本文中的答案类似的方法:与ASP.NET使用混合模式身份验证时如何配置IIS7。

除了我希望登录。在login.aspx的page_load事件中,我会检查用户的IP地址,如果它是内部地址,请将其重定向到WindowsLogin.aspx。我希望内部用户自动登录。外部用户必须输入表单凭据。

我的web.config已关闭匿名auth,Windows auth为Windowslogin.aspx打开了。但是,当我登录此页面时,我会被发送到重定向循环中。它试图将我送回login.aspx,而无需提示我获得Windows凭据或加载页面。在提琴手中,我可以在这两页之间看到302的来回。

似乎在windowslogin.aspx上,它仍在寻找表单auth令牌,它找不到它,并将您送回login.aspx。如何让Windowslogin.aspx页面加载并提示Windows凭据?

  <authentication mode="Forms">
      <forms cookieless="UseDeviceProfile" defaultUrl="~/Default.aspx" enableCrossAppRedirects="true" loginUrl="~/Login.aspx" name=".ASPXAUTH" path="/" protection="All" requireSSL="false" slidingExpiration="true" timeout="10080"/>
  </authentication>
<location path="Login.aspx">
    <system.web>
        <authorization>
            <allow users="?"/>
        </authorization>
    </system.web>
    <system.webServer>
        <security>
            <authentication>
                <anonymousAuthentication enabled="true"/>
                <windowsAuthentication enabled="false"/>
            </authentication>
        </security>
    </system.webServer>
</location>
<location path="WindowsLogin.aspx">
    <system.web>
        <authorization>
            <allow users="*"/>
        </authorization>
    </system.web>
    <system.webServer>
        <security>
            <authentication>
                <anonymousAuthentication enabled="false"/>
                <windowsAuthentication enabled="true"/>
            </authentication>
        </security>
    </system.webServer>
</location>

expliclity禁用Windowslogin.aspx Page

最新更新