Azure ad b2c MSAL作用域(openid配置文件脱机访问)。基本的简单配置文件可能不可能?

Azure ad b2c MSAL作用域(openid配置文件脱机访问)。基本的简单配置文件可能不可能?,azure-ad-b2c,msal,Azure Ad B2c,Msal,MSAL的行为就像它的API库层有一个硬编码的catch 22,当我使用它时,它似乎不合逻辑 string[] scopesArrayNonNullWORKS = new string[] { "email" }; string[] scopesArrayAlreadyThereInMsalCalls_FAILS = new string[] { "openid" }; string[] scopesArrayNoExtraScopesNeeded_FAILS = new string[0];

MSAL的行为就像它的API库层有一个硬编码的catch 22,当我使用它时,它似乎不合逻辑

string[] scopesArrayNonNullWORKS = new string[] { "email" };
string[] scopesArrayAlreadyThereInMsalCalls_FAILS = new string[] { "openid" };
string[] scopesArrayNoExtraScopesNeeded_FAILS = new string[0]; 

Microsoft.Identity.Client.ConfidentialClientApplication myCliApp; 
myCliApp.AcquireTokenByAuthorizationCodeAsync(code, scopesArray);
MSAL在每次调用中都内置并硬编码了这些作用域:openid、profile、offline\u access

这很好,适合我。我不需要任何额外的作用域

但是,我不能使用null或空范围列表。这就像MSAL库层迫使我请求不需要或不想要的作用域一样。如果我包含email(我不需要),那么库层会很高兴使用非null Scopes参数,并且一切正常

如果我使用我需要的一个作用域openid,那么库层会出错,因为我包含了一个已经存在的重复作用域openid

这似乎是第22条军规,而且周期性地不合逻辑。我不能使用我需要的作用域,或者,因为它们是预定义的。我无法传入空的作用域列表(并使用预定义的)或it错误。如果我传入一个我不想要或不需要的非空范围,那么它就工作了

我一定错过了一个重要的概念细节

我想使用这3个,只有这3个范围。。。openid、配置文件、脱机访问


此catch 22的一个错误示例:MSAL始终发送作用域“openid配置文件脱机访问”。不能抑制它们,因为它们是库正常运行所必需的。不要在scope参数中包含任何这些作用域。

这个问题实际上并不是一个问题,但是如果您的问题是“是否有可能对不需要额外作用域的应用程序进行身份验证”,那么我发现了一个解决方法,它肯定是一种黑客行为,可能不会永远起作用。我不能加入任何占位符作用域来让客户端API满意,因为服务器拒绝了它们。但是发送一个空白区域会使API关闭,并且似乎根本不会影响应用程序

string[]scopes=new[]{”“}