Обзор
У меня есть приложение REST, в котором есть 1 конечная точка / электронная книга
У него есть 3 HTTP-глагола, связанные с ним: получить (для получения сведений о книге), опубликовать (для добавления книги), удалить (для удаления книги)
Получение электронной книги доступно для всех пользователей системы.
Создание и удаление книги потребует административного доступа.
Я хочу, чтобы пользователи, имеющие доступ с правами администратора, только добавляли или удаляли электронную книгу, иначе говоря, пользователи, имеющие доступ только для чтения, НЕ ДОЛЖНЫ иметь возможность добавлять или удалять электронные книги.
Я не могу установить этот уровень детального доступа. С моей настройкой даже пользователи с доступом только для чтения могут добавлять, удалять электронные книги.
Конфигурация OKTA
Я настроил приложение для электронной книги и настроил OKTA в качестве сервера авторизации. Я могу получить токен доступа для доступа к приложению
Получение электронной книги доступно для всех пользователей, и я создал электронную книгу области действия: для этого прочтите на сервере авторизации OKTA.
Создание и удаление электронной книги потребует административного доступа, и я создал область электронной книги: измените для этого
Я создал два пользовательских приложения в OKTA.
- ReaderApp - Это приложение может использоваться только для чтения электронных книг.
- AdminApp - Это приложение может использоваться для чтения, добавления и удаления электронных книг
Я назначил нужных пользователей / групп этим приложениям.
Затем я создал 2 политики доступа на сервере авторизации
- Read Access Policy - для этой политики я назначил ReaderApp в качестве клиента и создал правило для принятия «Любой пользователь назначил приложение», а требуемая область действия - «ebook: read»
- Политика доступа администратора - для этой политики я назначил AdminApp в качестве клиента и создал правило для принятия «Любой пользователь назначил приложение», а запрашиваемая область действия - «электронная книга: чтение», «электронная книга: изменение»
На сервере авторизации я только добавил область действия и политику доступа, я не касался других вещей, таких как претензии и т. Д.
Выпуск
Следующее работает для меня, как и ожидалось до сих пор:
- AdminApp и ReaderApp не могут получить доступ к электронным книгам без маркера доступа
- ReaderApp успешно получил доступ к книге из EbookApp, запросив книгу: прочитайте область действия.
- ReaderApp не может создать / удалить книгу в EbookApp, запросив книгу: изменить область действия .
- AdminApp успешно прочитал / создал / удалил книгу в EbookApp, запросив книгу: измените область.
Тем не менее, ниже НЕ работает должным образом:
- ReaderApp может читать / создавать / удалять электронные книги в
запросив книгу: прочитайте область. Этого не должно быть
Можно ли запретить ReaderApp создавать / удалять электронные книги, запрашивая область действия "ebook: read".
Оба приложения AdminApp и ReaderApp используют одну и ту же конечную точку / электронную книгу.
Для ReaderApp методы post и delete не должны быть доступны в этой конечной точке, хотя я защищал их с помощью областей, но он не связан напрямую с конечными точками, которые являются проблема
Я думаю, что, возможно, упустил что-то очень простое, но, поскольку я новичок в OKTA, я пока не могу понять это.
Это то, что я должен настроить в самом приложении Ebook (Resource Server), или это возможно, чтобы справиться с этой ситуацией, используя OKTA только возможно с некоторыми конфигурациями Сервера авторизации.
Любые предложения приветствуются.
Примечание: В этом посте я упомянул только 1 конечную точку с несколькими http глаголами для ясности, но в моем реальном приложении есть много конечных точек