Node.JSアプリでAzure B2Cを実装するには、私はthis articleに従っています。 私はJWTトークンを取り戻し、署名を検証しようとしました。 jsonwebtoken npmモジュールを使用して自分のトークンを確認してください。 また、OpenID Connectメタデータエンドポイントから公開鍵を取得しました。彼らはJSONであり、次のようになります。NodeJSでAzureのB2Cで署名を検証する
{ "keys": [{
"kid": "some kid value",
"nbf": some number,
"use": "sig",
"kty": "RSA",
"e": "AQAB",
"n": "some long key"
}, {
"kid": "some kid value",
"nbf": some number,
"use": "sig",
"kty": "RSA",
"e": "AQAB",
"n": "some long key"
}, {
"kid": "some kid value",
"nbf": some number,
"use": "sig",
"kty": "RSA",
"e": "AQAB",
"n": "some long key"
}]
}
をだから私は
jwt.verify(token, 'my n value go here', { algorithms: ['RS256'] }, callbackFunction());
に適切なキーから 'n' の値を渡すためにしようとしている私は
Error: PEM_read_bio_PUBKEY failed
Iを得たとき間違ったキーを渡しているような気がして、トークンを検証するためにこの公開鍵のメタデータをどのように使うことができるかについては何の説明も見つけられませんでした。 記事からのみ有用ライン:
A description of how to perform signature validation is outside the scope of this document. Many open source libraries are available to help you with this if you need it.
は、どのように私は署名を検証するのですか?
ここからキーを入手しましたか:https://login.microsoftonline.com/common/discovery/keys?なぜならキーのように見える 'x5c'というプロパティがあるからです。 – juunas
@juunas、いいえ、[このリンク](https://login.microsoftonline.com/fabrikamb2c.onmicrosoft.com/discovery/v2.0/keys?p=b2c_1_sign_in)からキーを取得していますチュートリアル](https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-reference-oidc)、キーにx5cフィールドはありません。 –
[This記事](https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-signing-key-rollover)では、トークンの検証に必要なメタデータのエンドポイントとキーについて説明しています。 –