在Azure B2C和Microsoft帐户提供程序中使用MSAL js库似乎无法使用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 =代码&安培;范围= +的OpenID轮廓+电子邮件&安培; response_mode = form_post&安培;随机数= vkQ0vSBHFfYPydMhYl02ZA%3D%3D&安培;状态= eyJTSUQiOiJ4LW1zLWNwaW0tcmM6YTk0ZWYyMzktMDAwZi00YzIxLWE1MTAtOGNkMzk1YTU5NjI5IiwiVElEIjoiMDA4NjFiOTAtMzBhMy00NmZjLWJmMTgtOWE2MWY4Yjk3NTgyIn0
Google提出要求:
使用Microsoft Account请求:
登录后运行带有MSA的clientApplication.acquireTokenSilent(applicationConfig.b2cScopes) - 未处理拒绝user_login_error:需要用户登录
而对于Google,它会返回正确的持票人令牌。
Microsoft帐户配置启用了隐式授权流程,因此不确定是否缺少配置,或者这是B2C / MSA或MSAL库的问题。