Каков вариант использования нескольких подписей в JWS, который использует JWS JSON Serialization?
Я прочитал спецификацию JSON Web Signature, которую можно найти здесь. Спецификация определяет два представления сериализации для JSON Web Signatures. Одним из них является JWS Compact Serialization, а другим - метод JWS JSON Serialization. Представление JWS JSON Serialization позволяет иметь несколько подписей. Пример JWS, который использует JWS JSON Serialization:
{
"payload": "eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ",
"signatures": [
{
"protected": "eyJhbGciOiJSUzI1NiJ9",
"header": {
"kid": "2010-12-29"
},
"signature": "cC4hiUPoj9Eetdgtv3hF80EGrhuB__dzERat0XF9g2VtQgr9PJbu3XOiZj5RZmh7AAuHIm4Bh
-0Qc_lF5YKt_O8W2Fp5jujGbds9uJdbF9CUAr7t1dnZcAcQjbKBYNX4BAynRFdiuB
--f_nZLgrnbyTyWzO75vRK5h6xBArLIARNPvkSjtQBMHlb1L07Qe7K0GarZRmB_eSN9383LcOLn6_dO
--xi12jzDwusC-eOkHWEsqtFZESc6BfI7noOPqvhJ1phCnvWh6IeYI2w9QOYEUipUTI8np6Lbg
GY9Fs98rqVt5AXLIhWkWywlVmtVrBp0igcN_IoypGlUPQGe77Rw"
},
{
"protected": "eyJhbGciOiJFUzI1NiJ9",
"header": {
"kid": "e9bc097a-ce51-4036-9562-d2ade882db0d"
},
"signature": "DtEhU3ljbEg8L38VWAfUAqOyKAM6-Xx-F4GawxaepmXFCgfTjDxw5djxLa8ISlSApmWQxfKTUJqPP3-Kg6NU1Q"
}
]
}
Спецификация подразумевает, что иногда полезно иметь несколько подписей. Однако я не могу придумать причину, по которой вам нужно иметь больше одного.
Итак, с учетом вышесказанного, каков случай использования более чем одной подписи в JWS?
1 ответ
Согласно комментарию Флорента Морселли, существует как минимум 2 варианта использования:
Вы подписываете токен несколькими алгоритмами подписи (скажем, RS256, ES384 и PS512). в зависимости от возможностей аудитории (поддерживает только алгоритм ES384), он сможет проверить токен.
Несколько сторон договариваются об общей полезной нагрузке. Каждая сторона подписывает полезную нагрузку своим ключом, а подписи объединяются в один токен.