Aspnet Core-web.config授权

时间:2019-03-20 12:15:01

标签: asp.net-core authorization

我正在尝试向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核心根本不支持“第一版”吗?还是我做错了什么?

1 个答案:

答案 0 :(得分:2)

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

通过查看已发布的web.config的内容应该显而易见的是,它非常裸露。几乎唯一存在的就是AspNetCoreHosting模块配置,这当然是在IIS中托管ASP.NET Core所必需的。

现在,关于为什么第二个版本实际上 did 起作用的原因是,因为第二个版本放置在>>> x = np.ones(10) >>> x[np.array([0, 1])] = 2 >>> x array([2., 2., 1., 1., 1., 1., 1., 1., 1., 1.]) 内,直接用于IIS的配置,因此IIS在非常高级,然后再将任何内容传递给ASP.NET Core应用。 可以满足您的需求,但这是一种非常粗鲁的方法,因为您最终可能必须为不同的路径,用户和授权级别定义许多这样的部分,并且然后将其与您最终在ASP.NET Core应用中进行的更改保持同步。由于IIS只是将其视为静态路径,因此,如果移动或重命名任何内容,最终可能会意外地在安全性方面造成漏洞,因为尚未将IIS配置为授权该新位置。

总之,您应该删除所有这些内容和handle authorization via your ASP.NET Core app。仍然支持Windows Auth