angular — проверка токена JWT Auth0 в переполнении стека

Я пытаюсь отправить Auth0 JWT с моего клиента на мой сервер и проверить токен. Я отправляю token_id, возвращенный из аутентификации auth0, на мой сервер через заголовки AuthHttp, и я могу получить его без проблем в PHP.

Коротко и просто:

  • Angular 2 Auth0 JWT отправляется на сервер PHP.
  • Как проверить правильность подписи?

У меня есть секретный идентификатор, у меня есть класс помощника JWT с кодированием и декодированием.

Как проверить заголовок и тело = подпись отправленного JWT, если это даже правильный способ сделать это.

Редактировать:

Я передаю свой токен, который

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvbG93aWUuZXUuYXV0aDAuY29tXC8iLCJzdWIiOiJnb29nbGUtb2F1dGgyfDEwNDY4ODk4NjgxNzEwNjQ3Mjc5MCIsImF1ZCI6IlYwWWVaREliYmVGdEJ4Z3F2UkNzVkFjWWxscXpaZGlNIiwiZXhwIjoxNDc4NzMxNjIzLCJpYXQiOjE0Nzg2OTU2MjN9._uyKrxJ0lPR-tEPjOFiI5ygeiM689gqURcIfG4sWkWc

В котором я затем получаю тело этого токена и превращаю его в массив

Array (
[iss] => https://lowie.eu.auth0.com/
[sub] => google-oauth2|104688986817106472790
[aud] => V0YeZDIbbeFtBxgqvRCsVAcYllqzZdiM
[exp] => 1478731623
[iat] => 1478695623 )

Как только у меня есть массив, это моя полезная нагрузка, верно?

// Вот изображение токена, проверяемого как правильное
https://gyazo.com/93777863d988d8c6ef0fc4ea50755949

так почему код ниже не дает мне тот же токен?

$jwt = JWT::encode($bodyArray, "SuperSecureSecretSecret");

пока я получаю это обратно

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2xvd2llLmV1LmF1dGgwLmNvbS8iLCJzdWIiOiJnb29nbGUtb2F1dGgyfDEwNDY4ODk4NjgxNzEwNjQ3Mjc5MCIsImF1ZCI6IlYwWWVaREliYmVGdEJ4Z3F2UkNzVkFjWWxscXpaZGlNIiwiZXhwIjoxNDc4NzMxNjIzLCJpYXQiOjE0Nzg2OTU2MjN9.6lEg_0h0zytQZVBqDe-ZIS5PoSkFAJhWtRYSgaDCesY

1

Решение

Вы должны использовать существующую библиотеку, которая поддерживает тип используемой подписи JWT. Для быстрого ознакомления с доступными опциями для PHP проверьте Библиотеки раздел в jwt.io.

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

Для проверки подписи JWT прочитайте эту статью (Критические уязвимости в библиотеках JSON Web Token) убедиться, что использование вами библиотек не приводит к возможным уязвимостям.


Обновить:

Токены различаются, потому что они подписаны разными ключами, и полезная нагрузка также отличается; iss в одном есть "https://lowie.eu.auth0.com/" а с другой "https:\/\/lowie.eu.auth0.com\/", Вы можете проверить это, декодируя полезную нагрузку с помощью декодера Base64, и посмотрите на необработанный вывод.

Что еще более важно, вы не должны создавать никаких токенов, просто проверяя, что они действительны и были выпущены доверенным издателем, которому вы делегировали фактический процесс аутентификации.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]