JWT с несколькими парами закрытых / открытых ключей - PullRequest
0 голосов
/ 06 июля 2018

Я реализую что-то похожее на: https://login.microsoftonline.com/common/discovery/v2.0/keys

Spring JWT-приложение, которое генерирует и проверяет токен JWT. Я сгенерирую много открытых / закрытых ключей (я не хочу генерировать все токены с одним ключом. Одна пара ключей будет генерировать токен с более коротким сроком службы, вторая будет генерировать более длинный ...) Я создам конечную точку / ключи с открытыми ключами. Вопрос в том, как связать правильный открытый ключ с закрытым ключом в моем приложении, чтобы проверить его?

И второй: как генерировать ключи, как указано выше (с такими полями, как kty ":" RSA "," use ":" sig ", kid ...) Есть ли способ сделать это?

1 Ответ

0 голосов
/ 06 июля 2018

Как сгенерировать ключи, как указано выше (с такими полями, как "kty": "RSA", "use": "sig", "kid" ...) Есть ли способ сделать это?

Это стандарт, называемый JSON Web Key (JWK), определенный в RFC 7517 , который определяет структуру данных, которая представляет криптографический ключ в JSON.

В Java вы можете использовать Nimbus JOSE + JWT , который поддерживает JWK с ключами RSA.


Как связать правильный открытый ключ с закрытым ключом в моем приложении, чтобы проверить его?

Вы можете использовать утверждение заголовка kid в своем токене: это необязательное утверждение заголовка, которое содержит идентификатор ключа, особенно полезно, когда у вас есть несколько ключей для подписи токенов, и вам нужно посмотреть вверх, чтобы проверить подпись.

Если подписанный JWT является JWS, рассмотрите определение из RFC 7515 :

4.1.4. Параметр заголовка «kid» (идентификатор ключа)

Параметр заголовка kid (идентификатор ключа) является подсказкой, указывающей, какая клавиша был использован для обеспечения безопасности JWS. Этот параметр позволяет авторам явный сигнал об изменении ключа для получателей. Структура kid значение не указано. Его значение ДОЛЖНО быть чувствительным к регистру строка. Использование этого параметра заголовка НЕОБЯЗАТЕЛЬНО.

При использовании с JWK значение kid используется для соответствия JWK kid значение параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...