3

Я пытаюсь понять механизм аутентификации и авторизации ASP.NET. Я понял, в чем претензия &, что роль. Почти в каждом связанном сообщении в блоге или в вопросе здесь рекомендуется использовать утверждения и избегать ролей. Я смущен в этот момент. Как я могу использовать претензии без ролей? (Я обычно назначаю роли пользователям после их регистрации.)Претензии без ролей?

Любая помощь приветствуется.

Спасибо

ответ

4

Роль претензия тоже, претензии как раз больше Генеральная.

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

Я могу только предполагать, поскольку вы не показываете точные ссылки, что это не совсем «претендует на роли».

Это скорее «использование модели безопасности на основе утверждений по сравнению с моделью безопасности на основе ролей». Это легко объяснить, поскольку роли тоже являются претензиями, используя претензии, которые у вас есть, но у вас есть другие претензии.

Технически, если вы создаете ClaimsPrincipal и добавьте претензии Role, ASP.NET будет правильно распознавать роли, где бы вы ни рассчитывали, - авторизация WebForms, фильтры авторизации MVC и другие материалы на основе ролей работают как обычно.

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

http://www.wiktorzychla.com/2014/11/forms-authentication-revisited-for-net.html

В частности, вы просто добавить претензии роль как этот

var identity = new ClaimsIdentity("custom"); 
identity.AddClaim(new Claim(ClaimTypes.Name, txtLogin.Text)); 
identity.AddClaim(new Claim(ClaimTypes.Role, "admin")); 

var principal = new ClaimsPrincipal(identity); 

// write the principal to cookie 

Тем не менее, какие требования дать вам возможность сделать авторизацию на основе произвольных претензий, как «пользователь старше 18 лет "или" пользователь из Франции, Германии или Испании ". Такие произвольные утверждения не обязательно соответствуют «ролям», но являются идеальными утверждениями.

Вы делаете это разрешение с менеджером авторизации пользовательских требований, примерами здесь

https://msdn.microsoft.com/en-us/library/system.security.claims.claimsauthorizationmanager(v=vs.110).aspx

0

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

Следующие две ссылки содержат обзор безопасности на основе ролей и требований и пример использования требования в пределах атрибута, которые затем могут быть прикреплены к действию контроллера и обеспечивают авторизацией, похожую на AuthorizeAttribute:

What is the claims in ASP .NET Identity

ASP.NET Claims Authorization with ASP.NET Identity