Я работаю над самым первым проектом в моем офисе, где мы будем использовать «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?