Заявки на аутентификацию третьей стороны с JWT - PullRequest
0 голосов
/ 15 января 2020

Мы разработали рабочий процесс, позволяющий сторонним системам (1) использовать нашу (2) без необходимости дополнительной аутентификации, как показано здесь:

JWT workflow

Вот описание:

  1. Стороннее клиентское приложение (веб) хочет запустить наше приложение. Он запрашивает токен в своем собственном бэкэнде.

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

  3. Сторонний бэкэнд отправляет JWT в нашу систему через указанный c API

  4. После регистрации JWT отправляется обратно в стороннее клиентское приложение (веб)

  5. Стороннее приложение запускает наше клиентское приложение (веб), передавая JWT

  6. Наше приложение вызывает API нашего внутреннего интерфейса с использованием зарегистрированного JWT

Вопросы следующие:

  • Если этот рабочий процесс действителен / обычен
  • Как правильно использовать утверждения в JWT для user_email, organization_id токен

1 Ответ

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

Реестр утверждений токена IANA считается источником стандартных утверждений JWT. Если вас нет в списке - это может быть что угодно, но вы, вероятно, хотите свести к минимуму потенциальные столкновения с дополнительным пространством имен.

UPD кажется, что я неверно истолковал вопрос, и вы скорее предоставляете API для пользователей, которые были авторизованы третьей стороной. Я удалил часть oAuth, которая сейчас кажется неактуальной

. Как я отмечал в комментариях, JWT поставляется с подписью, которую ваш сервер может проверить с помощью сторонних ключей publi c. Таким образом, вы устраняете пару дополнительных вызовов API, чтобы все настроить.

Если вы выберете это, процесс может выглядеть следующим образом:

  1. Стороннее клиентское приложение (веб ) хочет запустить наше приложение. Он запрашивает токен в своем собственном бэкэнде.
  2. Бэкэнд стороннего производителя генерирует JWT с правильными issuer, audience другими необходимыми претензиями и подписывает его своим закрытым ключом
  3. Третья сторона серверная часть возвращает подписанный JWT клиенту
  4. . Стороннее приложение запускает наше клиентское приложение (веб), передавая JWT
  5. . Наше приложение вызывает API нашего внутреннего интерфейса с помощью зарегистрированного JWT (серверная часть проверит подпись токена с использованием токена-эмитента и стороннего открытого ключа c).

Проверка является частью стандарта , поэтому большинство библиотек справятся с этим при минимальной конфигурации. Просто знайте об известных проблемах проверки JWT / JWT и устраните их на своей стороне.

...