pro-dev
@pro-dev

Как передавать разрешения для API?

Привет!
Строим API. Пишем на Symfony. Symfony voter. OAuth2 На сервере для каждого сервиса есть своя логика реализованная с правами доступа. Сервер выдаёт ошибку 403, если доступ к действию запрещён. Однако frontend разработчик ещё просит сделать вывод разрешений для пользователя. Чтобы по одному запросу можно было получить разрешения того или иного ресурса и отображать на странице те или иные кнопки,ссылки, блоки..... Он видит это так:

api/article/1234/permission

Подскажите знающие люди как правильно выдавать пермишены? При авторизации передавать все разрешения не совсем удобно. Так как они могут быть изменены. Хотелось бы услышать ваш грамотный ответ по реализации такой задачи. Благодарю!
  • Вопрос задан
  • 134 просмотра
Решения вопроса 2
inoise
@inoise
Solution Architect, AWS Certified, Serverless
На вскидку:
1. Узнать про Hypermedia (HAL, HATEOAS) - Glory of rest. Имплементаций мало, но мы с командой делали и это очень круто, когда работает

2. В JWT есть Scope
3. Пошарить что там есть в протоколах OpenID/OAuth2 для этого (помню было, но так глубоко лезть не охота)

Лишний эндпоинт это явно дико
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
При каждом URI-запросе формируем запрос к API: api/article/1234/getPermissions с передачей в виде массива всех необходимых запрашиваемых прав для данного объекта (article).
Получив маску действующих разрешений в ответ, решаем: что делать дальше.

И запрос, и ответ - можно передавать сразу в http-заголовке или другим доп.полем, чтобы не плодить тучу запросов-ответов на согласование прав.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы