Как найти ключ подписи JOSE?
Моя цель - определить, какой ребенок используется для подписи конкретной полезной нагрузки:
try {
bearerToken = getBearerToken(req.headers);
console.log("token", { bearerToken });
// if the bearerToken is signed by another kid, how do i know which key to use?
let verifyBearerTokenKeystore = await jose.JWK.asKeyStore(mypubkey);
verifyBearerTokenResult = await jose.JWS.createVerify(
verifyBearerTokenKeystore
).verify(bearerToken);
} catch (e) {
console.error(e);
return res.status(403).send("invalid bearer token");
}
Если я намеренно сломал это
"kid": "z2U_owemqRLOQYEhiSX1fUrPp72hXSG6dKy8qUvu1DY"
в
ks.json
, Я ожидаю, что узел-хосе скажет:
Error: kid z2U_owemqRLOQYEhiSX1fUrPp72hXSG6dKy8qUvu1DY not found
нет
Error: no key found
Как мне заставить его сообщить мне, какого ребенка (идентификатор ключа) он ожидает? Кроме того, как верификаторы извлекают jwks_uri?