Правила авторизации IIS7 / Config - постоянный запрос - PullRequest
6 голосов
/ 08 декабря 2010

Я пытаюсь защитить приложение в IIS7 с использованием Правил авторизации .NET.

По умолчанию веб-сервер разрешает доступ всем пользователям (который наследуется).

Я добавил,только для этого одного каталога приложения: команда deny all users, а также команда allow для определенных пользователей.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.web>
        <authorization>
            <allow users="myusername" />
            <deny users="*" />
        </authorization>
    </system.web>
</configuration>

У меня включена проверка подлинности Windows, и я могу убедиться, что без строки, что мой REMOTE_USERMYDOMAIN \ MyUserName.

Однако, когда я пытаюсь запретить всем пользователям, мне предлагают типичное поле имени пользователя / пароля для домена Windows.Если я ввожу пароль для имени пользователя, запрос снова появляется 3 раза, пока, наконец, не появится сообщение об ошибке.(Я также пытался безрезультатно)

Глядя в средство просмотра событий, кажется, что мой вход в систему с использованием имени пользователя и pw прошел успешно в аудите ... и, что еще важнее, моя учетная запись небыть заблокированным (что было бы, если бы я не мог войти снова и снова).Так что, как будто я вхожу в систему, но конфигурация не видит то, что я ввел как совпадающее с моим именем входа.

Ниже приведено сообщение, которое я вижу (даже при подключении с сервера с использованием localhost):

** Доступ запрещен.

Описание: Произошла ошибка при доступе к ресурсам, необходимым для обслуживания этого запроса.Сервер не может быть настроен для доступа к запрошенному URL.

Сообщение об ошибке 401.2 .: неавторизовано: сбой входа в систему из-за конфигурации сервера.Убедитесь, что у вас есть разрешение на просмотр этого каталога или страницы на основе предоставленных вами учетных данных и методов аутентификации, включенных на веб-сервере.Обратитесь к администратору веб-сервера за дополнительной помощью. **

Ответы [ 4 ]

9 голосов
/ 08 декабря 2010

Прежде всего, основная проблема заключалась в том, что IIS6-авторизация также включена в IIS7, и, по крайней мере, в моем случае это было по умолчанию.Сначала убедитесь, что у вас установлена ​​авторизация IIS7.Полные указания можно найти здесь:

http://www.iis.net/ConfigReference/system.webServer/security/authorization

Путаница возникает из-за того, что в IIS7 в вашем приложении есть пункт под названием «Правила авторизации .NET» (в ASP.NETраздел).Это НЕ то, что вы хотите для авторизации IIS7.Для этого вы должны убедиться, что он установлен (см. Ссылку выше), а затем нажать на ссылку под разделом IIS вашего приложения под названием «Правила авторизации»

Еще одно примечание, которое стоит упомянуть, если вы поставитеследующий конфиг на месте:

<configuration>
  <system.webServer>
    <security>
      <authorization>
        <remove users="*" roles="" verbs="" />
        <add accessType="Deny" users="unknownname" />
        <add accessType="Allow" users="knownname" />
      </authorization>
    </security>
  </system.webServer>
</configuration>

Это приведет к тому, что всем будет отказано.Похоже, что если вы откажетесь от имени пользователя или несуществующей роли, ВСЕ будет отказано.Если отклоненный пользователь распознается, он работает нормально.

Кроме того, указание deny для * и allow для определенных пользователей не будет работать, оно будет запрещать для всех.Вам нужно просто удалить пользователя * (как в моем примере выше), а затем разрешить только для вашей целевой аудитории.Все остальные по умолчанию запрещены.

0 голосов
/ 05 января 2016

Я потратил 4 часа, пытаясь настроить это (использовать роль домена) :).Окончательным решением было использование доменного имени в роли:

`<system.web> 
   <authorization>
     <allow roles="DOMAINNAME\rolename" /> 
     <deny users="*" /> 
   </authorization>
</system.web>`
0 голосов
/ 08 декабря 2010

Не могли бы вы изменить свой код, как показано ниже

<deny users="*" />
<allow users="myusername" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...