Спецификация: RFC 9396
Rich Authorization Requests (RAR) позволяют клиентам указывать детализированные требования к авторизации через параметр authorization_details, выходя за рамки простых scopes.
Authorization Request
- Параметр
authorization_details— JSON-массив деталей авторизации, проверяется на/authorize— реализовано - Кастомные типы авторизации — регистрируются на уровне тенанта вместе с JSON Schema, которой должен соответствовать каждый объект — реализовано
-
authorization_detailsчерез pushed authorization request — переносятся из/parв токен — реализовано - Ошибка
invalid_authorization_details— на незарегистрированный тип, нарушение схемы или неизвестный location — реализовано
Структура Authorization Details
Каждый объект authorization detail содержит:
type— тип авторизации; должен соответствовать типу, зарегистрированному для тенантаlocations— целевые resource servers, разрешаются через реестр ресурсов так же, как параметрresourceиз RFC 8707actions— разрешенные действия- Кастомные поля для каждого типа авторизации
Сам auth интерпретирует только type и locations. Все остальное, включая actions, проверяется по зарегистрированной JSON Schema типа и сохраняется дословно: сервер авторизации обязан вернуть выданные детали без изменений и сравнивать их с последующим запросом ровно в том виде, в каком они были выданы.
Token Request
-
authorization_detailsв refresh token grant — реализовано -
authorization_detailsв client credentials grant — реализовано - Сужение прав по §6.1 — деталь, не покрытая исходным grant, отклоняется; порядок полей сам по себе не делает два одинаковых объекта разными — реализовано
Token Response
-
authorization_detailsв token response — выданные авторизации в неизменном виде — реализовано - Access token содержит выданные authorization details — реализовано
Метаданные сервера
-
authorization_details_types_supported— обновляется при регистрации и удалении типов — реализовано
Сценарии использования
Rich Authorization Requests обеспечивают:
- Авторизация платежей с указанием сумм и получателей
- Доступ к документам с конкретными правами (read/write/delete)
- Детализированный API доступ за пределами простых scopes
Статус
- Реализовано