Как найти ключ подписи 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?

0 ответов

Другие вопросы по тегам