0

我们最近将使用表单身份验证的 Framework 4.8 WebForms 项目转换为使用 Identity 2.0 身份验证,现在我们无法访问默认文档或图像,除非允许匿名访问。

一旦使用 Identity 进行身份验证,如果您浏览到诸如 http://mysite/dashboard/default.aspx 之类的文件夹,它就可以正常工作。但是,如果默认页面不在 http://mysite/dashboard/ 中的路径中,它会返回 401.2 ,就好像 IIS 需要权限来服务该页面:

*访问被拒绝。说明:访问处理此请求所需的资源时出错。服务器可能未配置为访问请求的 URL。

错误消息 401.2.:未经授权:由于服务器配置,登录失败。根据您提供的凭据和 Web 服务器上启用的身份验证方法,验证您是否有权查看此目录或页面。请联系 Web 服务器的管理员以获得更多帮助。*

我们有<authentication mode="None">我理解的对于这种情况是正确的。IIS 配置为使用默认文档,就像我们使用表单身份验证时一样。

我们还通过以下方式拒绝未经身份验证的用户System.Web.Security.UrlAuthorizationModule

<authorization>
      <deny users="?" />
</authorization>

如果我们允许对文件夹进行匿名访问,它确实可以工作,但我们不会在这些位置进行匿名访问。

<location path="Dashboard">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>  

那么,如何配置 IIS 以在没有“允许匿名”的情况下访问默认文档,使其像在表单身份验证下一样工作。

谢谢!!!

4

2 回答 2

0

发现添加<modules runAllManagedModulesForAllRequests="true">web.config解决的问题。目前还不确定为什么。我确实注意到对静态文件的请求不包括在删除表单身份验证之前工作的用户身份。添加后,用户身份开始出现在请求中。

于 2021-10-02T19:43:16.707 回答
0

尝试将此添加到该System.Webserver部分

<modules>
  <remove name="FormsAuthentication"/>
   <add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule"  />
</modules> 

关键似乎是从 FormsAuthentication 模块中删除 managedHandler 前提条件。据我了解,这只是为了优化静态内容的服务。

于 2021-09-27T06:22:45.423 回答