Я работаю с Elixir, используя пакет JOSE . У меня есть ALB, который использует правило прослушивателя аутентификации , и данные, которые я получаю в x-amzn-oidc-data
, должны быть JWT, содержащими заявки пользователей. Однако, хотя это значение в основном в формате JWT, оно кодируется URL-адресом base64, но с заполнением . Таким образом, JOSE не может проверить большинство входящих токенов (если токен приходит без заполнения, JOSE проверяет это без проблем).
Я думал, что мог бы это исправить, просто убрав символы =
из токен в заголовке, полезной нагрузке и подписи, однако ни одна из этих комбинаций не работает.
Я использовал jwt.io, чтобы попытаться отладить токен, и жалуется, что подпись становится недействительной, если я пытаюсь убрать =
символов из полезной нагрузки (только?) . Однако я попытался проверить токен с помощью библиотеки Python JOSE и библиотеки Javascript JOSE , и оба способны. Опять же, если я уберу символы дополнения из полезной нагрузки, обе эти библиотеки сообщат мне, что проверка подписи не удалась. Я должен оставить его для подписи от go до.
Есть ли способ преобразовать этот токен в формат, который не содержит отступы и может быть проверен пакетом Elixir JOSE? Я попытался перепроектировать, как эти библиотеки могут декодировать токены, в то время как другие терпят неудачу, но мне не повезло.
Просто для наглядного примера, так должны выглядеть токены
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.tyh-VfuzIxCyGYDlkBA7DfyjrqmSHu6pQ2hoZuFqUSLPNY2N0mpHb3nk5K17HWP_3cYHBw7AhHale5wky6-sVA
, но ALB отправляет мне вещи, которые выглядят как (обратите внимание на добавленные символы в полезной нагрузке и подписи)
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0==.tyh-VfuzIxCyGYDlkBA7DfyjrqmSHu6pQ2hoZuFqUSLPNY2N0mpHb3nk5K17HWP_3cYHBw7AhHale5wky6-sVA==