Устранение неполадок при декодировании токена доступа 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
,