Тонкий контроль доступа к конечным точкам моих конечных точек приложения REST с использованием OKTA и OAUTH - PullRequest
1 голос
/ 19 июня 2019

Обзор


У меня есть приложение REST, в котором есть 1 конечная точка / электронная книга

У него есть 3 HTTP-глагола, связанные с ним: получить (для получения сведений о книге), опубликовать (для добавления книги), удалить (для удаления книги)

Получение электронной книги доступно для всех пользователей системы. Создание и удаление книги потребует административного доступа.

Я хочу, чтобы пользователи, имеющие доступ с правами администратора, только добавляли или удаляли электронную книгу, иначе говоря, пользователи, имеющие доступ только для чтения, НЕ ДОЛЖНЫ иметь возможность добавлять или удалять электронные книги.

Я не могу установить этот уровень детального доступа. С моей настройкой даже пользователи с доступом только для чтения могут добавлять, удалять электронные книги.


Конфигурация OKTA

Я настроил приложение для электронной книги и настроил OKTA в качестве сервера авторизации. Я могу получить токен доступа для доступа к приложению

Получение электронной книги доступно для всех пользователей, и я создал электронную книгу области действия: для этого прочтите на сервере авторизации OKTA. Создание и удаление электронной книги потребует административного доступа, и я создал область электронной книги: измените для этого

Я создал два пользовательских приложения в OKTA.

  1. ReaderApp - Это приложение может использоваться только для чтения электронных книг.
  2. AdminApp - Это приложение может использоваться для чтения, добавления и удаления электронных книг

Я назначил нужных пользователей / групп этим приложениям.

Затем я создал 2 политики доступа на сервере авторизации

  1. Read Access Policy - для этой политики я назначил ReaderApp в качестве клиента и создал правило для принятия «Любой пользователь назначил приложение», а требуемая область действия - «ebook: read»
  2. Политика доступа администратора - для этой политики я назначил AdminApp в качестве клиента и создал правило для принятия «Любой пользователь назначил приложение», а запрашиваемая область действия - «электронная книга: чтение», «электронная книга: изменение»

На сервере авторизации я только добавил область действия и политику доступа, я не касался других вещей, таких как претензии и т. Д.


Выпуск

Следующее работает для меня, как и ожидалось до сих пор:

  1. AdminApp и ReaderApp не могут получить доступ к электронным книгам без маркера доступа
  2. ReaderApp успешно получил доступ к книге из EbookApp, запросив книгу: прочитайте область действия.
  3. ReaderApp не может создать / удалить книгу в EbookApp, запросив книгу: изменить область действия .
  4. AdminApp успешно прочитал / создал / удалил книгу в EbookApp, запросив книгу: измените область.

Тем не менее, ниже НЕ работает должным образом:

  1. ReaderApp может читать / создавать / удалять электронные книги в запросив книгу: прочитайте область. Этого не должно быть

Можно ли запретить ReaderApp создавать / удалять электронные книги, запрашивая область действия "ebook: read".

Оба приложения AdminApp и ReaderApp используют одну и ту же конечную точку / электронную книгу.

Для ReaderApp методы post и delete не должны быть доступны в этой конечной точке, хотя я защищал их с помощью областей, но он не связан напрямую с конечными точками, которые являются проблема

Я думаю, что, возможно, упустил что-то очень простое, но, поскольку я новичок в OKTA, я пока не могу понять это.

Это то, что я должен настроить в самом приложении Ebook (Resource Server), или это возможно, чтобы справиться с этой ситуацией, используя OKTA только возможно с некоторыми конфигурациями Сервера авторизации. Любые предложения приветствуются.

Примечание: В этом посте я упомянул только 1 конечную точку с несколькими http глаголами для ясности, но в моем реальном приложении есть много конечных точек

...