node.js - 在 Node.js 中验证 Azure idToken

标签 node.js jwt azure-active-directory

我在验证 v2 终结点颁发的 Azure idtoken 的 token 签名时遇到问题。

我已经阅读了文档( https://learn.microsoft.com/en-us/azure/active-directory/develop/v1-id-and-access-tokens#validating-tokens ),并且还有一些示例代码,但这指的是 TS/JS 以外的语言。

目前我的代码是

import {
  decode,
  verify
} from 'jsonwebtoken';

const token = 'myRand0mIdtoken...meh';
const key = 'key from -->'; // https://login.microsoftonline.com/common/discovery/v2.0/keys
console.log(
  decode(token), //works fine!
  verify(token, key) //JsonWebTokenError: invalid algorithm
);

我该如何解决这个问题?解码有效,但验证无效。

网站https://login.microsoftonline.com/common/discovery/v2.0/keys指向包含“key”数组的 JSON 文档。这包含多个关键对象。其中,我使用了“kid”值与 idToken header 中的“kid”值匹配的元素。

在此元素中有两个字段:x5t 和 x5c,它们看起来像公钥。我都尝试过,但没有运气。

亲切的问候

最佳答案

找到了解决方案。 https://nicksnettravels.builttoroam.com/post/2017/01/24/Verifying-Azure-Active-Directory-JWT-Tokens.aspx

看来,我刚刚忘记了包含公钥的起始行和结束行。工作格式为:

-----开始证书-----

JSON 文档中 x5c 字段的内容

-----证书结束-----

关于node.js - 在 Node.js 中验证 Azure idToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52644914/

相关文章:

node.js - 使用 nano 从 View 中读取数据

node.js - MongoSkin 错误插入

c# - 如何手动验证 JWT Asp.Net Core?

java - 在 JAVA 中使用 JWT 创建 token

spring - postman 中不支持的媒体类型

用于调用 Office 365 和 Graph API REST 的 Azure AD 身份验证

c# - Power Bi 管理的 Azure AD 代表流程

javascript - 了解 Passport.authenticate ('local' ) 语法位

node.js - 为什么我不能运行两个 node.js AWS opsworks 层?

azure - 如何以编程方式向 Azure Kubernetes (AKS) 进行身份验证