Аннотирование класса с использованием ClaimsPrincipalPermission с заявкой, возвращенной ADFS 2.0 - PullRequest
2 голосов
/ 02 декабря 2010

Я использую веб-приложение для разрешения претензий.Я хочу заблокировать веб-страницу с настраиваемым атрибутом, чтобы разрешить доступ к странице, если присутствуют определенные требования.

Я мог бы сделать следующее

Claim claim = claimsIdentity.Claims.FirstOrDefault(c => c.ClaimType 
== "http://somedomain.com/claims/MemberOfGroup" && c.Value == "domain\\test group");

иперенаправить их со страницы, если утверждение равно нулю.

Но как я могу это сделать, комментируя класс.

Я смотрел на ClaimsPrincipalPermission

[ClaimsPrincipalPermission(SecurityAction.Demand, Resource="", Operation="")]

но по жизни я не вижу, что вкладывать в ресурс и работу.Как мне получить мое требование, которое возвращается adfs в claimsprincipalpermission.Мне нужно написать много пользовательских классов для этого?

Спасибо,

1 Ответ

4 голосов
/ 10 марта 2011

Вам нужно будет создать свой собственный класс AuthorizationManager, который наследуется от ClaimsAuthorizationManager, и переопределить метод CheckAccess ().Этот метод будет вызываться для любого метода, украшенного атрибутом ClaimsPrincipalPermission.Ему будет передан объект AuthorizationContext, который содержит строку ресурса, строку операции и объект IPrincipal, содержащий все утверждения, которые есть у текущего пользователя.Внутри этого метода вы можете анализировать эти данные любым способом, определяющим доступ и возвращать true или false.

В примерах WIF SDK вы найдете простой консольный проект приложения под названием ClaimsAuthorization, который демонстрирует это.Он использует ресурс и операцию, чтобы просмотреть файл конфигурации приложения, чтобы увидеть, какие утверждения требуются пользователю, и возвращает соответственно значение true или false.Конечно, вам не нужно этого делать, вы можете использовать любую другую логику, которую вы выберете.

Образец обычно находится в C: \ Program Files (x86) \ Windows Identity Foundation SDK \ v4.0 \ Samples \ Extensibility \ Авторизация на основе утверждений

Надеюсь, что это поможет

...