MSAL范围(openid profile offline_access).基本的简单配置文件可能无法实现?

Sql*_*fer 10 azure-ad-b2c azure-ad-msal

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);
Run Code Online (Sandbox Code Playgroud)

MSAL内置并在每次调用时对这些范围进行硬编码:openid,profile,offline_access.

这很好,对我有用.我不需要任何额外的范围.

但是,我不能使用null或空范围列表.这就像MSAL库层强迫我要求我不需要或不想要的范围.如果我包含电子邮件(我不需要),那么库层对非null的Scopes参数感到满意,一切正常.

如果我使用我需要的一个范围,openid,那么库层错误,因为我已经包含了一个已经存在的重复范围openid.

这似乎是一个捕获22和周期性不合逻辑.我不能使用我需要的范围,或者它是错误的,因为它们是预定义的.我无法传入一个空的范围列表(并使用预定义的)或它的错误.如果我传入一个我不想要或不需要的非null范围,那么它可以工作.

我必须错过一个关键的概念细节.

我想使用这3个,只有这3个范围... openid,profile,offline_access.

此catch 22的错误示例:MSAL始终发送范围'openid profile offline_access'.它们无法被抑制,因为它们是库运行所必需的.请勿在scope参数中包含任何这些范围.

Dan*_*ter 1

这个问题并不是真正被表述为一个问题,但如果您的问题确实是“是否可以对不需要额外范围的应用程序进行身份验证”,那么我找到了一种解决方法,这绝对是一种黑客行为,并且可能不会永远有效。我无法添加任何占位符范围来让客户端 API 满意,因为服务器拒绝了它们。但发送空格会使 API 关闭,并且似乎根本不会影响应用程序。

string[] scopes = new[] {" "};