当前位置: 首页 > 知识库问答 >
问题:

在Node.js中验证Azure idToken

邢新
2023-03-14

我无法验证由v2终结点发布的Azure idToken的令牌签名。

我已经阅读了文件(https://docs.microsoft.com/en-us/azure/active-directory/develop/v1-id-and-access-tokens#validating-标记),还有一些示例代码,但这是指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个答案

郤令
2023-03-14

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

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

开始证书

JSON DOC中x5c字段的内容

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

 类似资料:
  • 问题内容: 我想验证以下类型的URL: 使用单个正则表达式,可以实现吗?如果是这样,请共享一个JavaScript解决方案。 请注意,我只希望底层协议为HTTP或HTTPS。而且,当前的主要问题是如何使用JavaScript中的一个正则表达式来映射所有这三种模式?不必检查页面是否处于活动状态。如果用户输入的值与上面列出的三种情况中的任何一种匹配,则如果不匹配,则应返回。 问题答案: 这有点hack

  • 问题内容: 是否有一个用于node.js的好的验证框架,该框架可以验证以下变量: 如果其类型为字符串,日期,数字等 最大和最小长度 电子邮件,电话 等等… 问题答案: 我最近发现了chriso的node- validator 。 例

  • 问题内容: 我正在运行此节点服务器: 我想为此服务器添加登录表单。因此,当用户通过身份验证时,它将显示。 进程中查询功能,如果未提供任何命令,则将文件返回给客户端,因此我可以将登录命令从客户端发送到服务器,但是当服务器接收到带有用户名密码的登录命令时,服务器应如何处理,应如何处理登录请求并返回登录成功或失败的信息,编写此部分需要帮助。 我试过了。 请建议我该如何添加会话,我尝试在登录功能中添加,请

  • 问题内容: 我想写书,所使用的一个一个的NodeJS REST的API服务器Joyent的,并且一切正常,除了我无法验证普通用户的身份验证。如果我跳到终端并执行,则无法在NodeJS http服务器上获取值username:password。如果我的NodeJS http服务器类似于 ,是否应该在来自回调的 req 对象中某处获取值username:password ?如何获得这些值而不必使用Co

  • 问题内容: 我想使用带有身份验证的其余api。我正在尝试包括标头,但没有得到任何回应。它抛出的输出通常是在没有身份验证时抛出的。谁能建议我一些解决方案。下面是我的代码 问题答案: 该请求模块将使您的生活更轻松。现在,它包括“ 基本身份验证”作为选项,因此您不必自己构建标题。 安装请求执行

  • 我有一个节点。使用根帐户连接到本地MySQL数据库的js程序(这不是生产设置)。这是创建连接的代码: 它与MySQL5.7一起工作,但是自从安装MySQL8.0之后,我在启动节点时遇到了这个错误。js应用程序: 根帐户似乎使用了一种新的密码哈希方法: ...但是我不知道为什么ode.js无法连接到它。我已经更新了所有的npm包,这仍然是一个问题。 我想保留新的密码哈希方法。我还能让这个连接工作吗?