Задать вопрос
  • Как расшифровать jwt токен?

    @maximdmitriychuk
    JWT не «расшифровывается» — он не зашифрован.
    Это просто Base64URL-кодированный JSON:

    header.payload.signature

    payload можно прочитать всегда: base64url_decode($payloadPart) — там будут iat, exp, iss, aud, sub и т.д.
    а вот чтобы доверять данным, нужно проверить подпись. В случае Apple токен подписан ES256, и проверять его надо по публичному ключу Apple из JWKS:
    https://appleid.apple.com/auth/keys

    В PHP удобно использовать, например:

    firebase/php-jwt или lcobucci/jwt — они умеют и декодировать, и валидировать подпись.
    Написано
  • Как работает jwt decode?

    @maximdmitriychuk
    JWT не шифруется — он всего лишь кодируется в Base64URL.
    Токен состоит из трёх частей: header.payload.signature.

    jwt.decode() просто раскодирует header и payload → поэтому содержимое видно без секрета.
    А вот проверка подлинности токена — это уже verify, там используется секрет/ключ и проверяется подпись.

    Итог: прочитать можно всегда, доверять — только после проверки подписи.

    Если нужно быстро посмотреть payload/exp/claims прямо в браузере и без копипасты, удобно использовать локальный DevTools-инструмент для JWT (декодирование происходит прямо на клиенте, без отправки токена куда-то).
    Написано