Я уже давно читал о службе управления доступом Azure и авторизации на основе утверждений в целом, и по какой-то причине я до сих пор не вижу обоснования перехода от авторизации на основе прав/разрешений к претензиям на основе модели. Модели кажутся мне похожими (и они, вероятно, есть), за исключением того, что список того, что клиент может и чего не может сделать, исходит от третьей стороны и завернут в какой-то токен, а не из какой-то базы данных, сервер должен запросить. В чем преимущество участия третьей стороны (эмитента маркеров)?
Я полностью понимаю преимущества аутсорсинговой аутентификации третьей стороне. Это позволяет приложениям не создавать новые пользователи все время, беспокоиться о сохранении паролей и т.д., Когда они могут просто оттолкнуть это на другой сервис, который уже настроен на инфраструктуру. Это, по сути, принцип DRY для аутентификации.
Однако, на мой взгляд, эта же логика не работает для авторизации. Каждое приложение имеет свои собственные ресурсы, которые он должен защитить, и, следовательно, свои собственные правила для авторизации пользователей для выполнения определенных действий. Инфраструктура кажется достаточно простой, чтобы каждое приложение могло создавать ее самостоятельно (таблица, сопоставляющая пользователей с ролями и, возможно, другие роли сопоставления с разрешениями), и даже если вы хотите передать ее на аутсорсинг, кажется, что модель на основе утверждений что-то более сложное.
Единственное частичное объяснение, которое я видел, - это построение модели безопасности на основе претензий в WCF и дает два основных преимущества для претензий основанный на полномочиях: большая гибкость, и кто-то "ручатся", что информация в претензии верна. Когда вам это понадобится?
Утверждение, основанное на требованиях, похоже, набирает популярность, поэтому я предполагаю, что для этого должно быть какое-то хорошее обоснование; Я просто не понял, что это такое. Может ли кто-нибудь указать конкретный пример ситуации, когда утверждение на основе утверждений лучше, чем на основе ролей, и почему оно работает лучше в этом случае?
(EDIT: я пропустил третье пособие, указанное в статье: поддержка единого входа/федерации. Но не делает ли это аутентификация самостоятельно без участия авторизации?)