@alexg-nn

Что делать, если не нужен oauth2?

Привет!

Пытаюсь разобраться в вопросах аутентификации/авторизации. Расскажу на примере.

1. Допустим есть некий (микро)сервис, например, блог. У этого сервиса есть внешний REST API https://acme.com/api/blog.
2. С точки зрения бизнес логики, писать новые посты в блог может только администратор (роль admin). Обычные залогиненные пользователи (роль signed_user) могут комментить, гости могут просто читать.
3. Есть необходимость написать а) SPA админку, б) Общий "обычный" фронтэнд, в) Native app для андроида и яблока.

Доступ к API, ясное дело, контролируется access token'ом в заголовке запроса.
Вопрос в методике получения этого токена. На практически любой поиск на тему AuthN/AuthZ в гугле вылезают статьи по прикручиванию протокола (если это можно так назвать) Oauth2. Но я не понимаю, зачем он здесь. Oauth2 позволяет условной Маше позволить условному сервису "мои котики" ходить в ее (Маши) профиль Вк и постить там от лица Маши фотографии этих самых котиков. То есть это протокол делегирования полномочий. Я знаю о "надстройке" поверх него OpenID Connect, но всё равно не вижу применения в моей ситуации этого решения.

Перво-наперво меня смущает идеология scop'ов. В случае делегирования Машей полномочий сервису "мои котики" она позволит Вк лишь постить картинки, но не читать переписку, скажем. В моём же случае, пользователи действуют явно (админ - пишет, юзвери - комментят, гости - читают). Делают они это осознанно, непосредственно. И никаких скоупов я не могу вывести из их ролей. Ну то есть, скажем, если есть какой-то чисто админский ресурс типа https://acme.com/api/stats, то туда всё равно никто не сможет попасть, не передав access_token с нужной ролью.

Другими словами, мне бы от Oauth2 пригодился бы только flow получения двух токенов (ведь refresh token тоже потребуется для native приложений), без упоминания scope.

Есть ли вообще примеры аутентификации/авторизации для REST API без контекста делегирования полномочий? Или всё так или иначе выливается в этот пресловутый Oauth2 + OpenID Connect в любом случае, если API открытое?
  • Вопрос задан
  • 117 просмотров
Пригласить эксперта
Ответы на вопрос 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Если не нужен, не пишите. В общем случае Oauth это общее целое для единообразной работы.
В этой статье подробно описано.
https://habr.com/ru/company/dataart/blog/311376/

В принципе если вам нужна аутентификация. Можете реализовать свою схему обмена, из плюсов токены не будут такими многословными как JWT.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы