Каковы эффективные способы создания пользовательского класса "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.