Протокол¶
Оглавление¶
Схема классов¶
keyapis/jwks/v1/keyapis_jwks_key_v1.proto¶
Сервис публикации публичных криптографических ключей в формате JWK
KeyService¶
Сервис JWKS
| Название метода | Описание | Тип запроса | Тип ответа |
|---|---|---|---|
| PostKey | Метод сохранения публичного ключа. Используется сервисом KMS. Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695357. Метод доступен для: service | keyapis.jwks.v1.PostKeyRequest | keyapis.jwks.v1.PostKeyResponse |
| DeleteKey | Метод удаления публичного ключа. Используется сервисом KMS. Метод доступен для: service | keyapis.jwks.v1.DeleteKeyRequest | keyapis.jwks.v1.DeleteKeyResponse |
| GetKeyWellKnownJwksJson | Метод получения публичных ключей. Возвращает три последних публичных ключа. Используется партнёрами, с помощью публичного ключа проверяется подпись в JWT, выпущенных платформой Ключ. Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695865. Не требует авторизации | keyapis.jwks.v1.GetKeyWellKnownJwksJsonRequest | keyapis.jwks.v1.GetKeyWellKnownJwksJsonResponse |
DeleteKeyRequest¶
Запрос удаления публичного ключа
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| id | Идентификатор ключа, соответсвует kid. # Тип: Guid | string | REQUIRED |
DeleteKeyResponse¶
Ответ на запрос удаления публичного ключа
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| error | Ошибка | optional keyapis.jwks.v1.DeleteKeyResponse.Error |
DeleteKeyResponse.Error¶
Ошибка запроса удаления публичного ключа
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| validation | Ошибка валидации | optional keyapis.jwks.v1.ValidationError |
GetKeyWellKnownJwksJsonRequest¶
Запрос на получение публичных ключей
GetKeyWellKnownJwksJsonResponse¶
Ответ на запрос на получение публичных ключей
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| data | Список ключей | repeated keyapis.jwks.v1.KeyInfo.PublicKey |
KeyInfo¶
Ключ.
Описание модели¶
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| id | Идентификатор ключа, соответсвует kid. # Тип: Guid | string | REQUIRED |
| public_key | Публичный ключ | keyapis.jwks.v1.KeyInfo.PublicKey | REQUIRED |
| created_at | Дата создания. # Тип: DateTime | google.protobuf.Timestamp | OUTPUT_ONLY |
KeyInfo.PublicKey¶
Публичный ключ
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| use | Вид использования. # Диапазон: 2..32 | string | REQUIRED |
| kty | Тип ключа. # Диапазон: 2..32 | string | REQUIRED |
| kid | Идентификатор. # Тип: Guid | string | REQUIRED |
| alg | Алгоритм шифрования. # Диапазон: 2..32 | string | |
| n | Параметр Modulus | string | REQUIRED |
| e | Параметр Exponent | string | REQUIRED |
| x5c | Цепочка сертификатов X.509. # Диапазон: 0..100 | repeated string |
KeyInfo.SavingError¶
Ошибка сохранения. Эти проверки выполняются при работе с базой данных и сторонними сервисами
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| key_already_exists | Ключ с таким идентификатором уже существует | optional keyapis.jwks.v1.KeyInfo.SavingError.KeyAlreadyExists |
KeyInfo.SavingError.KeyAlreadyExists¶
Ключ с таким идентификатором уже существует. Причины: - В базе хранится запись с переданнм kid
PostKeyRequest¶
Запрос на сохранение публичного ключа
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| data | Ключ | keyapis.jwks.v1.KeyInfo.PublicKey | REQUIRED |
PostKeyResponse¶
Ответ на запрос на сохранение публичного ключа
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| error | Ошибка | optional keyapis.jwks.v1.PostKeyResponse.Error |
PostKeyResponse.Error¶
Ошибка
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| validation | Ошибки валидации | optional keyapis.jwks.v1.ValidationError | |
| saving | Ошибка сохранения | optional keyapis.jwks.v1.KeyInfo.SavingError |
ValidationError¶
Ошибки валидации. Эти проверки выполняются до обращения в базу данных
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| path | Путь к полю в формате наименования прото | string | REQUIRED |
| message | Валидационное сообщение | string | REQUIRED |
Скалярные типы значений¶
| .proto Type | Примечание | Python | Go | Ruby | C# | C++ | Java | PHP |
|---|---|---|---|---|---|---|---|---|
| double | float | float64 | Float | double | double | double | float | |
| float | float | float32 | Float | float | float | float | float | |
| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int | int32 | Bignum or Fixnum (as required) | int | int32 | int | integer |
| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int/long | int64 | Bignum | long | int64 | long | integer/string |
| uint32 | Uses variable-length encoding. | int/long | uint32 | Bignum or Fixnum (as required) | uint | uint32 | int | integer |
| uint64 | Uses variable-length encoding. | int/long | uint64 | Bignum or Fixnum (as required) | ulong | uint64 | long | integer/string |
| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int | int32 | Bignum or Fixnum (as required) | int | int32 | int | integer |
| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int/long | int64 | Bignum | long | int64 | long | integer/string |
| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | int | uint32 | Bignum or Fixnum (as required) | uint | uint32 | int | integer |
| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | int/long | uint64 | Bignum | ulong | uint64 | long | integer/string |
| sfixed32 | Always four bytes. | int | int32 | Bignum or Fixnum (as required) | int | int32 | int | integer |
| sfixed64 | Always eight bytes. | int/long | int64 | Bignum | long | int64 | long | integer/string |
| bool | boolean | bool | TrueClass/FalseClass | bool | bool | boolean | boolean | |
| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | str/unicode | string | String (UTF-8) | string | string | String | string |
| bytes | May contain any arbitrary sequence of bytes. | str | []byte | String (ASCII-8BIT) | ByteString | string | ByteString | string |