繁体   English   中英

使用带有 Identity 2.0 的 Owin 加载默认文档时访问被拒绝 (401.2)

[英]Access denied (401.2) when loading default documents using Owin with Identity 2.0

我们最近将一个使用 Forms 身份验证的 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 配置为使用默认文档,就像我们使用 Forms 身份验证时一样。

我们还使用System.Web.Security.UrlAuthorizationModule拒绝未经身份验证的用户:

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

如果我们允许对文件夹进行匿名访问,它确实有效,但我们不允许对这些位置进行匿名访问。

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

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

谢谢!!!

尝试将其添加到System.Webserver部分

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

关键似乎是从 FormsAuthentication 模块中删除 managedHandler Precondition。 据我了解,这只是为了优化 static 内容的服务。

发现将<modules runAllManagedModulesForAllRequests="true">添加到web.config解决问题。 不太确定为什么在这一点上。 我确实注意到对 static 文件的请求不包括在删除 Forms 身份验证之前有效的用户身份。 添加后,用户身份开始显示在请求中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM