Для определенного набора разрешений, например. EditPage, CreateProject, ModifyUser. В настоящее время я рассматриваю два разных способа создания некоторых типов пользовательских претензий для моделирования такого поведения. Я могу найти мало информации в Интернете о лучшем способе сделать это и надеяться на некоторые отзывы о том, как вы это сделали в своих собственных системах.
Первый подход, который я рассмотрел, заключается в использовании типа претензии "действие" с конкретным действием, указанным значением претензии:
var claims = new []
{
new Claim("http://schemas.company.com/claims/project/action", "EditPage"),
new Claim("http://schemas.company.com/claims/project/action", "CreateProject"),
new Claim("http://schemas.company.com/claims/project/action", "ModifyUser")
}
Второй подход заключается в том, чтобы использовать сам тип заявки для определения выполняемого действия, значение не используется. Это похоже на стиль безопасности "PossessProperty", где до тех пор, пока у пользователя есть искомый тип, они могут выполнить действие.
var claims = new []
{
new Claim("http://schemas.company.com/claims/project/editpage", ""),
new Claim("http://schemas.company.com/claims/project/createproject", ""),
new Claim("http://schemas.company.com/claims/project/modifyuser", "")
}
Также обратите внимание, что в вышеперечисленных типах претензий я включил дискриминатор "project", чтобы я мог различать пользователя, который может редактировать страницу в Project A, но не Project B.
Мы также планируем хранить все эти пользовательские заявки в центральной базе данных "Авторизация", поэтому требуется уникальность.
Мы будем благодарны за любые мысли или отзывы.