Aspnet Core - авторизация web.config - PullRequest
0 голосов
/ 20 марта 2019

Я пытаюсь добавить элементы «авторизации» в 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>

обе версии , по-видимому, вообще не работают для aspnet.core, размещенного в IIS

Что работаетВот это:

"global":

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

На основе "location":

<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 Ответ

2 голосов
/ 20 марта 2019

ASP.NET Core не поддерживает и не использует web.config.Опубликованный файл web.config доступен только для хостинга IIS, поскольку IIS требует этого.Если вам довелось публиковать на другом веб-сервере, вы могли бы полностью отказаться от web.config.

Из содержимого опубликованного web.config должно быть очевидно, что оно крайне пустое.Практически единственное, что существует, - это конфигурация модуля AspNetCoreHosting, которая, конечно, необходима для размещения ASP.NET Core внутри IIS.

Теперь о том, почему вторая версия на самом деле сработала это связано с тем, что он был помещен в system.webServer, что напрямую связано с настройкой IIS, поэтому IIS выполняет авторизацию на очень высоком уровне, прежде чем что-либо будет передано вашему приложению ASP.NET Core.Это может работать для ваших нужд, но это крайне грубый подход, так как вам, вероятно, придется в конечном итоге определить множество таких разделов для разных путей, пользователей и уровней авторизации, а затем синхронизируйте это со всем, что вы в конечном итоге меняете в приложении ASP.NET Core.Поскольку IIS рассматривает это как просто статические пути, если вы перемещаете или переименовываете что-либо, вы можете случайно открыть дыру в вашей безопасности, поскольку IIS еще не был настроен для авторизации этого нового местоположения.

Короче говоря, вы должны удалить все это и обработать авторизацию через ваше приложение ASP.NET Core . Проверка подлинности Windows по-прежнему поддерживается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...