Каковы эффективные способы создания пользовательского класса "ClaimsAuthorizationManager" Windows Identity Foundation?

Я работаю над самым первым проектом в моем офисе, где мы будем использовать "Windows Identity Foundation" с авторизацией на основе утверждений. Для этого Microsoft .net предоставляет абстрактный класс ClaimsAuthorizationManager. Чтобы использовать этот класс, вы переопределяете два метода: конструктор и CheckAccess(context as ClaimsAuthorizationContext),

Конструктор все настраивает; затем, когда пользователь получает доступ к чему-либо, например, к веб-странице, CheckAccess вызывается с параметром, который указывает пользователя, ресурс, к которому осуществляется доступ, и действие, которое должно быть выполнено над ресурсом. Например, CheckAccess может быть вызван, чтобы увидеть, если пользователь Bob должен быть предоставлен доступ к ресурсу http://www.mysite.com/SecretPage.aspx выполнить действие GET, CheckAccess просто возвращается true или же false, Windows Identity Foundation дает нам гибкость в реализации CheckAccess почти любой способ вообразить!

В примерах кода, которые предоставляет Microsoft, CheckAccess настроен так, чтобы разрешить доступ пользователю, только если у него есть заявление на день рождения, которое указывает на возраст 21 или старше Эта политика приводится в виде простого текста в файле web.config и читается в ClaimsAuthorizationManager конструктор.

В моем офисе мы используем SQL для отслеживания почти всех наших данных, так и в моем случае. Я считаю, что имеет смысл программировать ClaimsAuthorizationManager читать данные из SQL, чтобы определить, может ли пользователь получить доступ к ресурсу или нет. Тем не менее, существует множество различных возможных политик. Я хочу создать ClaimsAuthorizationManager это будет полезно в текущем проекте, и я смогу развивать и совершенствовать его в будущем без необходимости разорвать и заменить проект, который я создаю сегодня.

Какие самые важные вещи нужно иметь в виду, когда я приступаю к этому проекту?

ОБНОВЛЕНИЕ: я работал над системой представления политик обязательных заявок в виде строк. Я использую логику бинарного дерева для группировки политик. Я веду базу данных претензий, связанных с "ресурсами" и "действиями".

Кто-нибудь еще здесь создал класс ClaimsAuthorizationManager?

1 ответ

Я думаю, это обнадеживает, что вы с нетерпением ждете попыток не писать мертвый код, НО я думаю, что вы забегаете вперед

Вам необходимо создать один или несколько пиков, которые будут рассматриваться как одноразовые, чтобы определить для себя, что имеет смысл для вашего конкретного сценария.

Тем не менее, если все ваши правила находятся в базе данных, создайте базовый CAM sproc, который считывает имя sproc из файла конфигурации. The CheckAccess args are not going to change so the sproc signature can be immutable allowing you to switch them out as needed.

Другие вопросы по тегам