对于某些用户,无法通过MSAL.NET进行身份验证

时间:2020-07-09 10:44:54

标签: azure-ad-b2c

我正在Windows窗体应用程序中使用MSAL.NET与我们的B2C租户进行身份验证。它在大多数情况下都有效,但是对于某些用户,会发生以下错误:

基于浏览器的身份验证对话框无法完成。原因:该协议未知,并且没有输入匹配的可插拔协议。

我认为问题与重定向URL中的代码长度有关,超过了系统浏览器URL的最大长度。但这只是一个猜测。我所知道的是:如果我删除失败用户的范围,或者从令牌中删除其他内容,则身份验证成功。而且我注意到授权码的长度取决于令牌的大小。

有人对如何解决这个问题有想法吗?

1 个答案:

答案 0 :(得分:0)

据我所知,由于URL长度的限制,此错误在某些浏览器中发生。这似乎是一个普遍的问题。如果来自授权端点的返回URL太长,则MSAL用于呈现网页的Web对话框将被阻止。只要B2C返回的授权码足够大,就会发生这种情况。

在B2C中,授权代码的大小与策略的自定义成比例。因此,要变通解决此问题,开发人员可以尝试从其策略中删除该声明。通常这会减少授权代码的大小。

请参阅:https://github.com/AzureADQuickStarts/B2C-NativeClient-DotNet/issues/1