Подтвердить что ты не робот

Какова роль ClaimsPrincipal, почему она имеет несколько идентификаторов?

Я пытаюсь понять модель безопасности за .NET на основе претензий к приложению (Relying Party).

Я знаю, что есть 2 основных класса:

  • ClaimsPrincipal - контекст безопасности для текущего процесса
  • IdentityPrincipal - хранит информацию о статусе аутентификации пользователя и заявках

Дело в том, что ClaimsPrincipal содержит только набор тождеств и указывает на используемый в настоящее время, но, насколько мне известно, директор обычно никогда не содержит более одного идентификатора, и даже если он будет - пользователь никогда не войдет в систему с 2 или более идентификаторов.

Мне, ClaimsPrincipal, за исключением использования его для получения текущей идентичности, извините мое невежество, это бесполезно.

Что мне не хватает, кроме того, что я заявлял, и пусть говорит о обратной совместимости в отношении класса ClaimsPrincipal?

4b9b3361

Ответ 1

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

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

Используя ClaimsTransformationManager, мы можем объединить эти два набора, то есть после аутентификации пользователя мы можем найти команду/отдел пользователя в базе данных и создать набор требований, выданных приложением.

Итак, теперь у нас есть роли (которые являются претензиями под капотом), утверждаемые Windows, и идентификатор приложения, подтверждающий пользовательские требования команд или отдела.