Aspnet Core - web.config授权

问题描述 投票:0回答:1

我试图在web.config中添加“授权”元素,就像它曾经在经典的asp.net中工作一样:

全局配置 - 应限制“全局”访问:

<configuration>
  <system.web>
    <authentication mode="Windows" />
    <authorization>
      <allow roles="AD\some.user" />
      <deny users="*" />
    </authorization>
...

基于“位置”的配置:

<configuration>
   <location path="RelativePath" >
     <system.web>
      <authorization>
        <allow roles="AD\some.user" />
        <deny users="*" />
      </authorization>
     </system.web>
   </location>

对于IIS中托管的aspnet.core,这两个版本似乎都不起作用

这是什么工作:

“全球”:

<configuration>
  <system.webServer>
    <security>
      <authorization>
      <remove users="*" roles="" verbs="" />
      <add accessType="Allow" roles="AD\johannes.colmsee" />
  </authorization>
</configuration>

“位置”基于:

<configuration>
   <location path="RelativePath" >
     <system.webServer>
      <security>
        <authorization>
          <remove users="*" roles="" verbs="" />
          <add accessType="Allow" roles="AD\denis.kopic" />
        </authorization>
      </security>
     </system.webServer>
   </location>

这很好用。

现在问我的问题:

aspnet核心根本不支持“第一版”吗?或者是我做错了什么?

asp.net-core authorization
1个回答
2
投票

ASP.NET Core不支持也不使用web.config。发布的web.config仅用于IIS托管,因为IIS需要这样做。如果您碰巧发布到其他Web服务器,则可以完全丢弃web.config。

从查看已发布的web.config的内容可以看出,它非常简单。几乎唯一存在的是AspNetCoreHosting模块配置,这当然是在IIS中托管ASP.NET Core所必需的。

现在,至于为什么第二个版本确实起作用,那是因为它被放在system.webServer中,它直接用于IIS的配置,因此IIS在将任何内容传递给ASP.NET之前都在非常高级别进行授权核心应用。这可能适合您的需求,但这是一种非常粗暴的方法,因为您可能最终会为不同的路径,用户和授权级别定义许多此类部分,然后将其与您最终的任何内容保持同步更改ASP.NET Core应用程序。因为IIS将此视为静态路径,所以如果移动或重命名任何内容,最终可能会在安全性中意外打开一个漏洞,因为IIS尚未配置为授权该新位置。

多长时间,你应该删除所有这些和handle authorization via your ASP.NET Core appWindows Auth仍然受到支持。

© www.soinside.com 2019 - 2024. All rights reserved.