Устранение неполадок при декодировании токена доступа Auth0 API с помощью Google App Engine и webapp2

ТЛ; др

Каков наилучший способ декодирования API access_token из Auth0, используя Google App Engine / python / webapp2 в качестве бэкэнд-стека?


Здравствуйте!

Я неопытен в способах аутентификации, авторизации и криптографии, поэтому, пожалуйста, потерпите меня, если я все-таки перепутал свою номенклатуру:)

Я пишу приложение для студенческого проекта, для которого я создаю веб-API REST-ish. Я хотел бы использовать Auth0 для аутентификации пользователя и авторизации API. Я создаю приложение на Google App Engine (GAE), стандартной среде, используя python и webapp2 в качестве основных технологий.

Я успешно получил API access_token на стороне клиента, и я работаю через поток проверки токена Python, аналогичный тому, который был найден в примере API Python Auth0. Я застреваю в точке декодирования токена!

Первая проблема заключается в том, что в примере используется питон joseпакет для декодирования токена. jose, а также PyJwtзависит от питона cryptography пакет для их тяжелого крипто-лифтинга. К сожалению, стандартная среда GAE не поддерживает пакеты Python с библиотеками C, поэтому cryptography не поддерживается. PyJwt имеет альтернативную настройку, которую они показывают специально для использования с GAE, который опирается на pycrypto вместо cryptography, GAE предлагает pycrypto в качестве встроенной библиотеки, так что все в порядке. Это работает, если я хочу продолжить PyJwt,

Следующая проблема, которую я имею, состоит в том, что потоки проверки токена, о которых я читал, для использования Auth0 jwks набор ключей для декодирования токена. К сожалению, я не могу понять, как использовать PyJwt в традиционном режиме с jwksключ... он ожидает ключ в формате PEM.

Я могу представить несколько возможных решений, но я не знаю, существуют ли они! Может быть, что-то вроде одного из следующих?

  • Преобразовать jwks ключ установлен на ключ в формате PEM с помощью pycrypto вместо cryptography?
  • Найти веб-API для декодирования токена для меня, может быть, из Auth0 или jwt.io?
  • Получить ключ в формате PEM из конечной точки Auth0 вместо jwks задавать?
  • Просто используйте HS256 вместо RS256? Это решило бы мою проблему?

Являются ли какие-либо из этих идей реалистичными? Кто-нибудь еще имел дело с этой проблемой?

Спасибо за любые идеи!

ОБНОВЛЕНИЕ Я получил ответ на этот вопрос на форуме сообщества Auth0. Короткий ответ - использование HS256,

0 ответов

Другие вопросы по тегам