Отличить интерфейс от других серверов при доступе к API - PullRequest
0 голосов
/ 20 марта 2020

Я создал свой REST API и у меня есть несколько конечных точек (пример):

/v2/posts
/v2/user/{id}

Существует два способа доступа пользователей к этим конечным точкам:

  1. Моя CMS
  2. Некоторым другим API, который хочет использовать мой API

КЛЮЧИ API , можно считать токенами личного доступа; что-то, что сохраняется в БД и имеет is_revoked и является долгоживущим (по одному или более) для каждого пользователя.

CMS:

При условии , что пользователь входит в систему со своим именем пользователя и пароль на моей CMS он получит JWT (у пользователя JWT)

Когда пользователь пытается получить доступ к api.myapp.com / v2 / posts в CMS он отправит JWT (пытается получить доступ к данным)

Затем он получит запрошенные данные (Fetch data)

Внешний API:

Учитывая , что внешний API имеет ключ API для доступа к моему API

Когда этот внешний API пытается получить доступ к api.myapp .com / v2 / posts с использованием предоставленного ключа API

Тогда внешний API получит данные

Проблема:

Я хочу быть уверен, что JWT можно отправлять только из моего CMS, а ключ API - только из внешних API. В настоящее время внешний API может отправлять JWT моему API и получать данные. Я хочу иметь возможность различать, кто делает вызов API. Как этого добиться? В настоящее время я отправляю Bearer if JWT и Apikey если API-ключ.

Дополнительные вопросы

  • Безопасно ли разрешать ключам JWT и API доступ к моему API? Должен ли я реализовать промежуточный уровень, который будет использовать JWT для генерации / повторного использования ключа API?
  • Это хорошая идея для обработки областей внутри полезной нагрузки JWT?
  • Должен ли я регулировать вызовы CMS и внешний API звонки?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...