Как создать действительный JWT в PHP с использованием RSA256 ⇐ Php
-
Гость
Как создать действительный JWT в PHP с использованием RSA256
У меня возникли аналогичные трудности с этим вопросом. Мне нужно создать JWT в php. У меня есть следующий код:
define('RSA_PRIVATE', 'MIICXAIB......EWxOf9o='); $payload = json_encode([ 'sub' => 'имя пользователя', 'электронная почта' => 'john@example.com', 'given_name' => 'Джон', 'family_name' => 'Пример', 'iat' => время(), 'одноразовый номер' => '12345' ]); $header = json_encode([ 'тип' => 'JWT', 'алг' => 'RS256' ]); $base64UrlHeader = base64UrlEncode($header); $base64UrlPayload = base64UrlEncode($payload); $signature = hash_hmac('sha256', "$base64UrlHeader.$base64UrlPayload", RSA_PRIVATE, true); $base64UrlSignature = base64UrlEncode($signature); $jwt = "$base64UrlHeader.$base64UrlPayload.$base64UrlSignature"; эхо ($ jwt); функция base64UrlEncode($text) { вернуть str_replace( ['+', '/', '='], ['-', '_', ''], base64_encode($текст) ); } Каждый раз, когда я пытаюсь выполнить проверку у третьего лица, которому нужен мой JWT, он возвращает мне сообщение
Проверка подписи не удалась: подпись rsa не совпадает
Когда я пытаюсь выполнить проверку с помощью отладчика JWT, он тоже сообщает, что он недействителен.
Я что-то упустил? Как и в предыдущем вопросе, я видел только примеры, когда люди используют небольшие секреты, а не частные ключи RSA.
У меня возникли аналогичные трудности с этим вопросом. Мне нужно создать JWT в php. У меня есть следующий код:
define('RSA_PRIVATE', 'MIICXAIB......EWxOf9o='); $payload = json_encode([ 'sub' => 'имя пользователя', 'электронная почта' => 'john@example.com', 'given_name' => 'Джон', 'family_name' => 'Пример', 'iat' => время(), 'одноразовый номер' => '12345' ]); $header = json_encode([ 'тип' => 'JWT', 'алг' => 'RS256' ]); $base64UrlHeader = base64UrlEncode($header); $base64UrlPayload = base64UrlEncode($payload); $signature = hash_hmac('sha256', "$base64UrlHeader.$base64UrlPayload", RSA_PRIVATE, true); $base64UrlSignature = base64UrlEncode($signature); $jwt = "$base64UrlHeader.$base64UrlPayload.$base64UrlSignature"; эхо ($ jwt); функция base64UrlEncode($text) { вернуть str_replace( ['+', '/', '='], ['-', '_', ''], base64_encode($текст) ); } Каждый раз, когда я пытаюсь выполнить проверку у третьего лица, которому нужен мой JWT, он возвращает мне сообщение
Проверка подписи не удалась: подпись rsa не совпадает
Когда я пытаюсь выполнить проверку с помощью отладчика JWT, он тоже сообщает, что он недействителен.
Я что-то упустил? Как и в предыдущем вопросе, я видел только примеры, когда люди используют небольшие секреты, а не частные ключи RSA.
Мобильная версия