Вызовите REST API с пользовательским контекстом и без него - PullRequest
1 голос
/ 16 января 2020

У меня есть пользовательский микросервис. Этот микросервис использует token authorization. Теперь он используется веб-приложением. Рабочий процесс выглядит следующим образом:

  • пользователь входит в веб-приложение, используя AzureAd OpenIdConnect;
  • веб-приложение получает access token (authorization code поток);
  • веб-приложение получает данные пользователя из службы пользователя, передавая access token в заголовке HTTP-запроса.

Также у меня есть микросервис-демон, в котором у меня нет пользовательского контекста. Я хочу, чтобы эта служба демона тоже получала данные о пользователях. Я собираюсь использовать поток client credentials для этого случая.

Как правильно организовать пользовательский API службы отдыха?

Я думаю об этом подходе:

  • данные пользователя доступны по этому URL /users/{userId}/info;
  • приложения с пользовательским контекстом (т. Е. Токен доступа выдается для конкретного пользователя с использованием потока authorization code) могут использовать данные только для current user или current user является администратором и может работать с данными другого пользователя;
  • приложения-демоны без current user (т. е. токен доступа выдается для самого приложения с использованием потока client credentials) могут считывать данные для любого пользователя.

Какова наилучшая практика для таких случаев?

1 Ответ

1 голос
/ 16 января 2020

Я думаю, что лучший и более спокойный подход к определению этого API - это создание уникальной конечной точки /users/{id}. Где id может быть фактическим реальным идентификатором пользователя или предопределенным значением, таким как «me». Именно пользовательский сервис должен извлекать из токена пользовательскую информацию в случае, если значение идентификатора - «я». Другие изменения, которые я хотел бы сделать, - это использовать users вместо user, потому что остальные хорошие практики говорят, что элементами в URL являются collection . И последнее, не использовать info, потому что это избыточно. Потому что, когда вы запрашиваете сущность, очевидно, вам нужна ее информация

...