为何Web API需要配置SignUpSignInPolicyId?
关于Azure AD B2C中Web API配置SignUpSignInPolicyId的疑问解答
先看示例中的Web API配置:
"AzureAdB2C": { "Instance": "https://fabrikamb2c.b2clogin.com", "ClientId": "90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6", "Domain": "fabrikamb2c.onmicrosoft.com", "SignedOutCallbackPath": "/signout/B2C_1_susi_reset_v2", "SignUpSignInPolicyId": "B2C_1_susi_reset_v2" //"CallbackPath": "/signin/B2C_1_sign_up_in" // defaults to /signin-oidc },
你的困惑点非常准确:Web API确实不控制登录注册流程,只负责验证令牌,但这个配置是令牌验证环节的核心要求:
- 发行人(iss)校验:Azure AD B2C签发的JWT令牌里,
*iss*字段包含完整的策略标识,格式为https://{Instance}/{Domain}/{SignUpSignInPolicyId}/v2.0/。API验证令牌时必须确认该字段与预定义的信任值一致,配置*SignUpSignInPolicyId*后,验证组件能自动生成合法的发行人地址,拒绝来自其他策略或恶意源的令牌。 - 元数据自动获取:ASP.NET Core的Azure AD B2C中间件会用
*SignUpSignInPolicyId*配置拼接出对应策略的OpenID Connect元数据地址,从中获取用于验证令牌签名的公钥、支持的算法等关键信息,确保令牌未被篡改且符合信任标准。
另外提一句:示例里的SignedOutCallbackPath是给前端登录应用使用的配置,Web API完全不需要,可以删除这个冗余项。
内容的提问来源于stack exchange,提问作者Victorio Berra
相关产品推荐
相关产品推荐

