在 Node.js 中验证 Azure idToken

Posted

技术标签:

【中文标题】在 Node.js 中验证 Azure idToken【英文标题】:Validate an Azure idToken in Node.js 【发布时间】:2019-03-09 17:44:29 【问题描述】:

我在验证 v2 端点颁发的 Azure idtoken 的令牌签名时遇到问题。

我已经阅读了文档(https://docs.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 指向一个包含“keys”数组的 JSON 文档。这包含多个关键对象。其中,我使用了“kid”值与 idToken 标题中的“kid”值匹配的元素。

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

亲切的问候

【问题讨论】:

【参考方案1】:

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

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

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

JSON 文档中 x5c 字段的内容

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

【讨论】:

以上是关于在 Node.js 中验证 Azure idToken的主要内容,如果未能解决你的问题,请参考以下文章

是否有人成功使用 Azure AD 对 Node.js Web 应用程序的用户进行身份验证?

从 Node.js 函数访问 Azure Synapse Analytics

调用 Azure Functions 的静态 Angular 应用程序。是安全问题吗?

将 Azure 自定义视觉模型与 Node.js 结合使用

Azure node.js API App - 在运行时失败(可能是node.js版本问题?)

使用 node.js 将 Azure 文件共享复制到 Blob