UWP B2C C#.NET应用querystring过长错误,咨询MSAL是否支持POST请求
问题解答
4.x版本的Microsoft.Identity.Client(MSAL.NET)原生支持将交互式身份认证请求从默认的GET改为POST提交,可直接解决SAML请求过长导致的Requested query string too long报错。
你只需要在原有AcquireTokenInteractive的链式调用中添加对应的配置项即可,不需要重构核心逻辑,修改后的代码如下:
PublicClientApp = PublicClientApplicationBuilder.Create(AuthServiceConfiguration.ClientId) .WithB2CAuthority(AuthServiceConfiguration.Authority) .Build(); AuthenticationResult authResult = await PublicClientApp.AcquireTokenInteractive(AuthServiceConfiguration.ApiScopes) .WithAccount(GetAccountByPolicy(accounts, AuthServiceConfiguration.PolicySignUpSignIn)) .WithPrompt(Prompt.SelectAccount) // 新增这一行配置,指定用POST方式提交授权请求 .WithOptions(new InteractiveRequestOptions { UseFormPost = true }) .ExecuteAsync();
如果你的MSAL版本低于4.37.0,建议先升级到最新的4.x稳定版,该配置项从4.37.0版本开始正式加入,无需修改其他依赖逻辑。配置生效后,所有授权请求参数会放在HTTP请求体中传输,不会再拼接在URL查询字符串中,完全适配Azure AD B2C对接SAML类身份提供商的场景。
内容的提问来源于stack exchange,提问作者Full Stack Brain
相关产品推荐
相关产品推荐

