将 MSAL js 库与 Azure B2C 和 Microsoft 帐户提供程序一起使用似乎无法使用 MSAL 项目中包含的示例。
MSA 似乎将最终的 HTTP POST 作为 authresp,因为带有 MSA 的 B2C 使用响应模式 = 表单发布,而 Google、Facebook 和 LinkedIn 的所有 authresp 都返回 GET 请求。这反过来会导致 MSAL 无法正确处理从 B2C/MSA 返回的不记名令牌。
这是 B2C 向 MSA 提出的请求,注意 response_mode=form_post https://login.live.com/oauth20_authorize.srf?client_id= ********-1b08-4d7c-b56d-9076584c3b71&redirect_uri=https: %2f%2flogin.microsoftonline.com%2fte%********-ab1c-4f9d-83b5-899025a2c3ca%2foauth2%2fauthresp&response_type=code&scope=openid+profile+email&response_mode=form_post&nonce=vkQ0vSBHFfYPydMhYl02ZA%3d%3d&state=eyJTSUQiOiJ4LW1zLWNwaW0tcmM6YTk0ZWYyMzktMDAwZi00YzIxLWE1MTAtOGNkMzk1YTU5NjI5IiwiVElEIjoiMDA4NjFiOTAtMzBhMy00NmZjLWJmMTgtOWE2MWY4Yjk3NTgyIn0
使用谷歌请求:
使用 Microsoft 帐户的请求:
登录后使用 MSA 运行 clientApplication.acquireTokenSilent(applicationConfig.b2cScopes) 会导致 - 未处理的拒绝 user_login_error: 需要用户登录
而对于 Google,它会返回一个正确的不记名令牌。
在 Microsoft 帐户配置上启用了隐式授权流,因此不确定是否缺少配置或者这是 B2C/MSA 或 MSAL 库的问题。