Декодирование JWT на уровне шлюза GraphQL или на уровне микросервиса? - PullRequest
0 голосов
/ 23 октября 2019

У меня есть микросервисная архитектура, которая использует GraphQL. Он имеет шлюз GraphQL, который использует объединение схем для объединения всех схем GraphQL.

Я планирую реализовать аутентификацию и авторизацию следующим образом:

  1. Аутентификация - токены проверяютсятретье лицо (AWS Cognito)
  2. Декодирование - я хочу сделать это на уровне шлюза. Это огромная выгода. Это устранит много логики в нескольких микросервисах. Это также облегчает миграцию, если нам нужно сменить провайдера (Auth0?). Плюс
  3. Авторизация в сервисах - все сервисы, которыми нужно управлять, это Авторизация и бизнес логика

Есть ли какие-либо подводные камни, которые я здесь упускаю? Может ли это быть плохой идеей?

1 Ответ

1 голос
/ 23 октября 2019

Это звучит как отличный вариант использования для проверки, встроенной в шлюз, при условии, что для всех базовых запросов действительно нужен действительный токен. Единственное, что я хотел бы предостеречь, - это не слишком умничать с логикой, которую вы пытаетесь подтолкнуть к шлюзу, чтобы избежать долгосрочной связи. Например, декодирование и проверка подписи JWT - это отличная вещь в шлюзе, поскольку вы, вероятно, хотите, чтобы одна и та же проверка выполнялась для всех маршрутов, но попытка проверить области или выполнить какие-либо проверки для каждого маршрута лучше всего обрабатывать в самом приложении. .

Для контекста, у меня в настоящее время есть шлюз nginx перед моими службами, проверяющий сигнатуру токенов JWT перед его прохождением, и который позволяет базовым сервисам предполагать, что токен заслуживает доверия и предотвращает попадание неверных запросовсервер приложений.

...