对接Azure B2C时,MSAL库能否配置response_mode为form_post?
如何将MSAL JS配置为使用form_post模式的response_mode对接Azure B2C
当然可以,MSAL JS完全支持把response_mode配置为form_post,解决URL过长被拦截的问题,下面分两种场景说明配置方式:
全局默认配置
在初始化MSAL的PublicClientApplication实例时,直接在配置对象中指定responseMode参数,这样所有发起的授权请求都会默认使用form_post模式:
const msalConfig = { auth: { clientId: "你的Azure B2C应用ID", authority: "https://你的租户名.b2clogin.com/你的租户名.onmicrosoft.com/你的用户流", redirectUri: "你的重定向URI", responseMode: "form_post" // 全局设置为form_post } }; const msalInstance = new msal.PublicClientApplication(msalConfig);
单个请求单独配置
如果只需要针对特定授权请求使用form_post,可以在调用loginRedirect、loginPopup等方法时,在请求参数中单独指定:
const loginRequest = { scopes: ["openid", "profile", "offline_access"], responseMode: "form_post" // 仅该请求使用form_post }; msalInstance.loginRedirect(loginRequest);
注意事项
- 确保你的Azure B2C应用注册中,已经将重定向URI添加到允许的重定向URI列表里,因为
form_post模式会把授权响应以POST方式提交到该URI,未配置的话会报错。 - 重定向页面需要加载MSAL实例并调用
handleRedirectPromise(),MSAL会自动处理POST返回的授权数据,无需手动解析请求体。
内容的提问来源于stack exchange,提问作者Douglas Woods
相关产品推荐
相关产品推荐

