Как микросервис Python может проверять запросы, используя JWT в заголовке авторизации? - PullRequest
1 голос
/ 29 января 2020

Различные библиотеки python для OpenID 2 или OID C, похоже, ориентированы на полнофункциональные веб-клиенты, реализованные в Python, которые участвуют в полном танце OAUTH2 для входа в систему. Как может микросервис API, реализованный в Python и Flask, проверять входящие запросы, для которых в заголовке Authorization указан JWT в качестве маркера Bearer, а затем извлекать информацию о заявке из JWT?

Ответы [ 2 ]

2 голосов
/ 29 января 2020

JWT на самом деле довольно простые вещи, поэтому довольно просто написать собственный код для работы с ними. Тем не менее, зачем изобретать велосипед? Я бы предложил библиотеку pyjwt (https://pyjwt.readthedocs.io/en/latest/). Делает все, что мог.

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

Добавление некоторой информации с точки зрения протокола.

Проверка JWT определяется самой спецификацией JWT. RFC7519 JSON Веб-токен (JWT) содержит раздел 7.2. Проверка JWT , который определяет, что вы должны делать в конечной точке получения токена. Я приветствую вас через go, чтобы вы имели правильное понимание и не создавали лазеек в безопасности.

Конечно, языковые реализации легко доступны в качестве других ответов. Но вкратце это шаги:

  • Извлечение частей JWT: Заголовок , Тело и подпись
  • Go через содержимое заголовка и определение типа JWT и его типа ( JWS против JWE )
  • Проверка подписи ИЛИ проверка шифрования
  • Декодирование и чтение тело с пользовательскими или желаемыми проверками

Как только у вас есть претензии от тела, вам решать. Но если вы получаете токен OID C ID, проверьте его по руководству спецификации

...