首页 > 解决方案 > 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 }

标签: node.jsazureazure-active-directoryazure-ad-b2c

解决方案


我尝试了以下选项,它对我有用。

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 用户流而不是自定义策略。

你能试试看它是否有效。

希望能帮助到你。


推荐阅读