Обработка разрешений для вложенных групп (поставщик ролей ASP.NET) - PullRequest
0 голосов
/ 13 декабря 2010

У нас есть модуль безопасности, который на основе членства в группе / роли контролирует права доступа к ресурсам в ASP.Net. Я создал собственный поставщик ролей ASP.Net, который запрашивает Active Directory о членстве в группе и который используется этим модулем.

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

  1. Запрос AD для списка членов группы
  2. База данных запросов для списка пользователей и групп с доступом к запрошенному ресурсу
  3. Сравните результаты из AD с результатами из базы данных. Если у пользователя явно есть права или если у группы, в которой он находится, есть права, то разрешите доступ, иначе нет.

Проблема возникает, когда у нас есть вложенные группы. Допустим, у нас есть две группы: ParentGroup и ChildGroup , где ChildGroup является членом ParentGroup в Active Directory и где наш пользователь участник ChildGroup . Согласно приведенной выше логике, если мы предоставим ChildGroup доступ к ресурсу, тогда пользователь также сможет получить доступ к ресурсу.

Теперь по логике (для меня в любом случае), если мы дадим ParentGroup доступ к ресурсу, тогда все члены, а также любые подгруппы и их члены, полученные рекурсивно, также должны иметь доступ к указанному ресурсу. Но вместо этого, из-за того, как работает моя логика, они не могут получить доступ к ресурсу. Шаг 1 из приведенного выше списка не видит ParentGroup , он видит только ChildGroup , а Шаг 2 видит только ParentGroup и не видит ChildGroup .

Итак, вопрос в том, чтобы заставить его работать так, как я описал это "логически", где я должен решить проблему, и есть ли какой-нибудь метод, который будет работать лучше , чем другой?

1 Ответ

0 голосов
/ 24 июня 2011

Попробуйте использовать метод WindowsPrincipal.IsInRole () вместо прямого запроса AD.Я разместил здесь пример кода , который может помочь.

...