gpt4 book ai didi

node.js - Azure Active Directory B2C 与 Passport.js 错误 "Cannot get aad federation metadata"错误

转载 作者:太空宇宙 更新时间:2023-11-04 03:00:03 25 4
gpt4 key购买 nike

我正在尝试使用 Passport.js 和 Azure Active Directory B2C 以及 OpenID Connect 策略为我的 Node.js Web 应用实现面向客户的身份验证。

我已按照官方 GitHub 页面上的 README 说明进行操作,并研究了官方示例应用程序的源代码,但正如在线各个线程所同意的那样,它们似乎不完整和/或过时。

在拼凑了网络上的各种提示后,我跨越了许多桥梁,但由于以下错误陷入了僵局:

无法从您指定的端点获取 AAD 联合元数据

AAD 身份验证需要大量配置,因此我将记下一些重要值:

  • policyName:这是 b2c_1_signin,就像我在 Azure 门户中配置的那样。
  • identityMetadata:我正在使用特定于租户的 v2.0 端点。我添加了 ?p=b2c_1_signin 来注入(inject)策略名称。
  • responseType:id_token
  • redirectUrl:这是我在 Azure 中配置的本地主机和端口。 allowHttpForRedirectUrl 设置为 true。 (这适用于非生产环境。)
  • isB2C:true

最佳答案

对于B2C,您需要设置validateIssuer: false。对于非通用端点,我们使用从 AAD 返回的元数据中的颁发者,对于 B2C,passport.authenticate 无法从元数据中获取 issuer 值。对于 B2C, Passport 使用 TenantId 来处理验证,因此必须提供它,它将成为 identityMetadata 的一部分。

此外,identityMetadata 应采用以下格式:

identityMetadata:“https://”+ b2cDomainHost +“/”+tenantIdGuid+“/”+policyName +“/v2.0/.well-known/openid-configuration/”

我认为 Passport 没有设置为处理元数据网址的这种格式 -> ?p=b2c_1_signin

您可以尝试this node.js sample ,并使用您自己的值,这将调用 Passport.js 库。

示例:

var clientID = "93733604-cc77-4a3c-a604-87084dd55348";
var b2cDomainHost = "fabrikamb2c.b2clogin.com";
var tenantIdGuid = "775527ff-9a37-4307-8b3d-cc311f58d925";
var policyName = "B2C_1_SUSI";
var options = {
identityMetadata: "https://" + b2cDomainHost + "/" + tenantIdGuid + "/" + policyName + "/v2.0/.well-known/openid-configuration/",

clientID: clientID,
policyName: policyName,
isB2C: true,
validateIssuer: false,
loggingLevel: 'info',
loggingNoPII: false,
passReqToCallback: false
};

关于node.js - Azure Active Directory B2C 与 Passport.js 错误 "Cannot get aad federation metadata"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60070024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com