node.js - Azure AD B2C (NodeJS):使用有效令牌的请求出现未经授权的 401 错误
问题描述
我正在使用 Azure AD B2C 对我的 NodeJS API 进行身份验证。但是,我不断收到 Azure AD B2C 的 401 Unauthorized 错误。当我添加ignoreExpiration: true
到我的 AAD 身份验证选项时,我没有收到 401 Unauthorized 错误并且我的 API 工作正常。但是,一旦我删除了 ignoreExpiration,我就会收到 401 Unauthorized 错误。
我什至生成了一个新令牌,通过使用https://jwt.io/解码令牌来验证它是有效的(并且没有过期)。我什至确保它具有正确的范围。
该 API 目前正在我的机器上运行,因为我正在使用 POSTMAN 对其进行测试。有人可以帮忙吗?这是我的 AAD 选项的样子:
var aad_auth_options = { identityMetadata: process.env.AADMetadataEndpoint,
clientID: process.env.ClientId,
audience: process.env.AADAudience,
isB2C: true,
validateIssuer: false,
loggingLevel: 'info',
passReqToCallback: false,
policyName: process.env.PolicyName,
// ignoreExpiration: true, //When uncommented, the authentication works as expected!
loggingNoPII: false
}
解决方案
我尝试了以下选项,它对我有用。
var options = {
identityMetadata: "https://login.microsoftonline.com/" + tenantID + "/v2.0/.well-known/openid-configuration/",
clientID: clientID,
policyName: policyName,
isB2C: true,
validateIssuer: true,
loggingLevel: 'info',
passReqToCallback: false
};
您也可以通过观众。我用于测试的存储库如下所述-
https://github.com/Azure-Samples/active-directory-b2c-javascript-nodejs-webapi/blob/master/index.js
注意:- 我使用的是 AD B2C 用户流而不是自定义策略。
你能试试看它是否有效。
希望能帮助到你。
推荐阅读
- flopy - MODFLOW 6 中基于 DEM 移动水的自动选项
- fiware - QuantumLeap、OrionCB 和 IoTagent-LoRaWAN 集成
- javascript - Firebase FieldPath.documentId() where 查询问题
- git - 使用“允许不相关的历史”并合并
- python - Django 模板处理器会与 URL 混淆吗?
- c++ - 无法公开功能。获取:“LNK2005”错误。如何调试链接器错误
- ionic-framework - 使用 Ionic5 重新创建 Ionic3 按钮
- javascript - 我怎样才能用 Momentjs 格式化日期看起来像这样?
- angular - PWA swupdate.available 仅在 localhost 上触发。使用 nginx 反向代理 [Angular 9] 使用自定义基本 href 部署时不起作用
- c - 动态结构分配后如何修复堆损坏?