【问题标题】:MSAL Scopes (openid profile offline_access). Basic Simple Profiles May Not be Possible?MSAL 范围(openid 配置文件offline_access)。基本的简单配置文件可能不可行?
【发布时间】:2023-04-06 17:32:01
【问题描述】:

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_access

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

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

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

这似乎是一个陷阱 22,并且周期性地不合逻辑。我不能使用我需要的范围,或者因为它们是预定义的而出错。我不能传入一个空的范围列表(并使用预定义的),否则会出错。如果我传入一个我不想要或不需要的非空范围,那么它就可以工作。

我一定遗漏了一个重要的概念细节。

我想使用这 3 个,并且只有这 3 个作用域... openid 、 profile 、offline_access

此 catch 22 的错误示例:MSAL 始终发送范围“openid profile offline_access”。它们不能被抑制,因为它们是库运行所必需的。不要在范围参数中包含任何这些范围。

【问题讨论】:

    标签: azure-ad-b2c msal


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 2015-06-05
      • 1970-01-01
      • 1970-01-01
      • 2022-11-07
      • 2021-02-24
      相关资源
      最近更新 更多