Что нужно знать о JWKS?
В работе с сервисом Мобильный ID могут потребоваться пары криптографических ключей в формате JSON (JWK):
- Для подписания (ключ с “use”:”sig”) — при формировании значения параметра request в запросе на /si-authorize и NestedJWT в запросе на /kyc-match-split.
- Для шифрования (ключ с “use”:”enc”) — при формировании и обработке body запросов и ответов на /kyc-match-split и /premiuminfo.
Сервис-провайдеру необходимо сгенерировать ключи, опубликовать их на своём ресурсе и вписать адрес хранения публичных ключей в анкету на подключение к сервису. Ключи должны храниться в виде JSON Web Key Set (JWKS) — JSON-объекта с параметром “keys”, в который включён массив с набором публичных ключей (JWK).
Пример JWKS
{
"keys": [
{
"kty": "RSA",
"e": "AQAB",
"use": "sig",
"kid": "zno_K2w2J28A0CGPciEDDfMcCgd2JK5x779hAgmmUgc",
"alg": "RS256",
"n": "k_cWneEqkYOcMgec5H2yhwWV5QNX6C-MQa_BIUnlgUVa8-2BPtYVCMJdOrbagHi_CtEeCOPMmBWVZ-C-I_2KotHmwH-I5YRIIp7Pd9nK0w5NLWph9hzlZGu42AGicOJ4sCHNp0vM4KyK9gbgoy_8BGcJqTyiI6w3CB3xVFpbptnnuG1cYB3eh9804BaGfYlMKLlKSJp_nANz6ys52FQw24B1Er6Tzb5qww1IEW40U71ZdKE9BKsQrQbQpWsk725f3MdMn1SqDA3m6VsxmMtmeGvnFwQ-6yw3n5HVUCNf1L8XD36H-rIbmj2GzDmPOihka1kqUnp1lWXaGHX1mDY0Lw"
},
{
"kty": "RSA",
"e": "AQAB",
"use": "enc",
"kid": "g88rEbg2SBNTB2OmGN7WJz5xfmyL69VqsM693iJMXdE",
"alg": "RSA-OAEP",
"n": "uXahz_z1m-SctY738bvUQFOmV2cDSJxIJk3SnoOShZxRbZgHgLK-o5-aqRUS1ahjfl6uRxKQAabWeKJmv1k95eVuXYzJX5EzDtcHn0nXd02uflnNyOcl-v-NcfJwvBwteAn8TDNPMTo45qx4h6NZtq8OCXSfmMZbEcIYv9wT_dD0KL043BqOLPc5Ak9MO2SxqP3DDJQEPM8LQS6nXJI0BAFG1m5DbsPGpTK0M5fYRGnlK1YyPig5oDG8MKdK4Ia6JV8SuQZNQ6UCuHCvG90VrZmN39cOh0DUJdaMIvggGrB-T7pPvGsIb2QjIkSrhQUP1-3etG5yOOAxNFYZ92p8cQ"
}
]
}
Ссылки на документацию:
Генерация JWK
Чтобы сгенерировать ключи, можно использовать сервис mkjwk.org.
Подписание
Для выполнения операции подписания необходимо сгенерировать JWK со следующими параметрами:
- Key Type = RSA
- Key Size = 2048
- Key Use = Signature
- Algorithm = RS256
- Key id = уникальное значение
Шифрование
Для выполнения операции шифрования необходимо сгенерировать JWK со следующими параметрами:
- Key Type = RSA
- Key Size = 2048
- Key Use = Encryption
- Algorithm = RSA-OAEP-256
- Key id = уникальное значение