Node.js 为什么我们需要在azure B2C passport中验证发卡机构?

Node.js 为什么我们需要在azure B2C passport中验证发卡机构?,node.js,passport.js,azure-active-directory,azure-ad-b2c,Node.js,Passport.js,Azure Active Directory,Azure Ad B2c,我在节点中有Azure AD B2C,我想知道为什么我们使用ValidateIsuer=true或false passport.use(new BearerStrategy({ isB2C: true, validateIssuer: false, loggingLevel: 'trace', passReqToCallback: false, } 如果我将其设置为false,它会向我发送警告以在生产环境中设置为true,因此为什么在使用Passport Az

我在节点中有Azure AD B2C,我想知道为什么我们使用ValidateIsuer=true或false

passport.use(new BearerStrategy({

    isB2C: true,
    validateIssuer: false,
    loggingLevel: 'trace',
    passReqToCallback: false,
}

如果我将其设置为false,它会向我发送警告以在生产环境中设置为true,因此为什么在使用Passport Azure AD B2C时需要验证发卡机构显然,它可以决定您是否在id_令牌中验证iss声明。以下是解释:

validateIssuer(有条件的)

如果不想验证颁发者,则需要设置为false,默认值 价值是真实的。我们针对用户验证
id\u令牌中的
iss
声明 提供了
发行人
值和我们从中获得的发行人值 租户特定端点。如果将公共端点用于
identityMetadata
如果要验证
颁发者
,则必须 为每个登录请求提供颁发者或租户 在passport.authenticate中使用
tenantitorname
选项

有关passport选项的更多详细信息,请参阅


希望这有帮助

您需要验证颁发者,因为许多服务可以生成令牌,但您只希望信任某些来源

例如:

A:
“iss”:https://login.microsoftonline.com/[您的应用程序guid]/v2.0“

vs

B:
“iss”:https://login.microsoftonline.com/[我的应用程序guid]/v2.0“

vs

C:
“iss”:https://a.malicious.site.com/v2.0“


您不希望允许BC发行代币,但您确实希望接受A

发行的代币,请检查IDTokenValidaiton文章@,本文将告诉您具体内容和原因