Azure AD B2C集成MSAL时Microsoft登录报redirect_uri无效如何解决?
这个报错的根因是走B2C用户流的微软身份验证时,微软登录端点校验的回调地址不是你前端应用的地址,而是B2C租户的统一回调地址。你之前直接调用https://login.microsoft.com/common端点时不需要走B2C中转,所以用你应用的重定向地址就可以正常运行,切换到B2C用户流后没有配置微软侧的对应回调地址就会报错。
你可以按以下步骤排查修复:
- 找到你在Azure AD中注册的、用作B2C微软身份提供商的应用(注意不是你B2C租户里注册的前端应用),进入「身份验证」配置页,添加重定向URI:
https://dwsdevb2c.b2clogin.com/dwsdevb2c.onmicrosoft.com/oauth2/authresp,类型选Web,不要选SPA。 - 检查该Azure AD应用的「清单」,确认
signInAudience值为AzureADandPersonalMicrosoftAccount,和你需要支持的账号范围一致。 - 回到B2C租户的「身份提供商」配置页,找到你配置的微软身份提供商,确认填写的客户端ID、客户端密钥和上面这个Azure AD应用的对应值完全一致。
- 如果用localhost测试,确认你当前启动的前端服务端口确实是3000,没有反向代理、端口转发导致
window.location.origin和你配置的重定向URI不一致。 - 如果上述配置都正确,可以在浏览器开发者工具的网络标签页,过滤到指向login.microsoftonline.com的请求,查看请求参数里的
redirect_uri值,和你在微软应用里配置的地址完全匹配,包括大小写、末尾斜杠、协议(http/https)都不能有差异。
内容的提问来源于stack exchange,提问作者Kasey Chakos
相关产品推荐
相关产品推荐

