Аутентификация на основе претензий: строки являются сущностью претензий?
-
24-10-2019 - |
Вопрос
Я уже некоторое время программировал аутентификацию на основе претензий Windows Identity Foundation.
Мне кажется, что в Windows Identity Foundation, После того, как пользователь входит в систему, претензии - это в основном строки информации, которая описывает пользователя.
С старой аутентификацией, основанной на роле, я мог бы сказать, что пользователь является или не является членом данной группы, но с аутентификацией, основанной на претензиях, теперь я могу иметь строки информации, которая описывает пользователя. «Этот пользователь женщина». Этот пользователь родился 6 июля 1975 года ». «Этот пользователь вошел в систему, используя USB -ключ».
Является ли это сущностью аутентификации на основе претензий, что у меня есть строки информации о пользователе, предоставленном приложению в рамках?
Решение
Претензии являются атрибутами о предмете, взаимодействующем с вашей заявкой, и могут быть что-либо. Анкет Все примеры, которые вы привели, по сути, верны.
Вот почему вы можете использовать претензии для не только правил управления авторизацией. Например, они также могут представлять информацию о профиле пользователя. И ролевое членство - это просто еще один атрибут (который в основном используется для контроля доступа).
Пара наблюдений:
- Одно тонкое, но очень важное отличие состоит в том, что претензии выдаются доверенным, авторитетным субъектом (STS). Происхождение претензии так же важно, как и сама претензия. Чтобы использовать простой пример: если я отправлю вам токен, выпущенный Microsoft STS с претензии «Title = Manager Program», вы, вероятно, обладаете высокой уверенностью, что я являюсь PM, работаю в Microsoft. Другими словами, существует корреляция между верностью атрибутов, которые вы получаете, и уровнем доверия, который вы оказали на эмитента.
- В претензиях WIF значения реализованы как «строки» (как в типе .NET), но они могут быть любым (сериализируемым) объектом. Для простых вещей, таких как роли, группы, имена и т. Д. Вы просто используете значение. Для других более сложных типов вам понадобится какая -то десериализация.