Чому <deny users = «?» /> включено в наступний приклад?


77

Узагальнюючий ?знак представляє неаутентифікованих користувачів, тоді як *представляє всіх користувачів, автентифікованих та неаутентифікованих. У моїй книзі наведено такий приклад авторизації URL-адрес:

<authorization>
  <deny users="?" />
  <allow users="dan,matthew" />
  <deny users="*" />
</authorization>


Але чи не має вищевказаний код такого ефекту, як:

<authorization>
  <allow users="dan,matthew" />
  <deny users="*" />
</authorization>

чи автор також включив <deny users="?" />правило з причини?

Відповіді:


94

ASP.NET надає доступ до файлу конфігурації як пріоритет. У разі потенційного конфлікту пріоритет має перший грант. Так,

deny user="?" 

забороняє доступ анонімному користувачеві. Тоді

allow users="dan,matthew" 

надає доступ до цього користувача. Нарешті, він забороняє доступ кожному. Це витрясається, оскільки всім, крім Дана, Метью відмовлено у доступі.

Відредаговано, щоб додати: і як зазначає @Deviant, відмова в доступі до неавторизованих безглуздо, оскільки останній запис також включає неаутентифікованих. Хороший запис у блозі, що обговорює цю тему, можна знайти за адресою: Блог Гуру Саркара


41

"Під час виконання модуль авторизації переглядає елементи дозволу та заборони, починаючи з самого локального конфігураційного файлу, поки модуль авторизації не знаходить перше правило доступу, яке відповідає певному обліковому запису користувача. Потім модуль авторизації надає або забороняє доступ до ресурс URL-адреси залежно від того, чи перше знайдене правило доступу - це правило дозволу чи заборони. Правилом авторизації за замовчуванням є. Таким чином, за замовчуванням доступ дозволений, якщо не встановлено інше. "

Стаття на MSDN

deny = * means deny everyone
deny = ? means deny unauthenticated users

У вашому 1-му прикладі відмова * не вплине на дан, метью, оскільки вони вже були дозволені попереднім правилом.

Згідно з документами, тут немає різниці у ваших 2 наборах правил.


4

Приклад 1 наведено для програм asp.net, що використовують аутентифікацію форм. Це звичайна практика для Інтернет-додатків, оскільки користувач не проходить аутентифікацію, доки не буде здійснено автентифікацію щодо якогось модуля безпеки.

Приклад 2 - для програми asp.net, що використовує аутентифікацію Windows. Аутентифікація Windows використовує Active Directory для автентифікації користувачів. Це перешкоджатиме доступу до вашої програми. Я використовую цю функцію в додатках інтрамережі.


-1

Дивіться ці два посилання:

заборонити елемент для авторизації (схема налаштувань ASP.NET) http://msdn.microsoft.com/en-us/library/vstudio/8aeskccd%28v=vs.100%29.aspx

дозволити елемент для авторизації (схема налаштувань ASP.NET): http://msdn.microsoft.com/en-us/library/vstudio/acsd09b0%28v=vs.100%29.aspx


4
Чи можете ви пояснити, як це відповідає на питання? Відповіді, як очікується, стоять самі по собі за допомогою посилань, що використовуються для довідки.
Едвард
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.