Задать вопрос
@aopil

Подпись в javascript или в php через имеет какую-то разницу?

В браузере через "консоль" получаю RSA приватный ключ:
{
    "alg": "RS256",
    "d": "123...",
    "dp": "123...",
    "dq": "123",
    "e": "AQAB",
    "ext": true,
    "key_ops": [
        "sign"
    ],
    "kty": "RSA",
    "n": "123",
    "p": "123",
    "q": "123",
    "qi": "123"
}


Копирую, и конвертирую в PEM формат через сайт

Через PHP подписываю:
openssl_sign($sHeader . '.' . $sClaim, $strToken, openssl_pkey_get_private($privateKeyPemString), OPENSSL_ALGO_SHA256);
$strToken = base64url_encode($sHeader) . '.' . base64url_encode($sClaim) . '.' . base64url_encode($strToken);


Проблема: JWS токен не работает. Изначально думал, что ошибка в данных, которые подписываю, но ТОЧНО НЕТ, по одним и тем же данным я сделал 2 подписи: Одну через мой PHP скрипт, другую через консоль браузера на сайте, где данное действие выполняется для создания JWS токена. Результат - разница только в самой подписи, что логично, а проблема всё таже - мой токен JWS не работает, а токен сгенерированный через консоль браузера - работает.

Единственное, что странно для меня: В браузере, в коде javascriptах, приватный ключ передается в виде объекта, а я конвертирую его в PEM формат, казалось бы бред, но другого объяснения не вижу, или подпись в javascript через KJUR.jws.JWS.sign и php через openssl_sign имеет какую-то разницу?
  • Вопрос задан
  • 142 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы