为什么 Azure 门户突然要求 OpenID Connect 范围用于已注册应用程序的声明?

Why is Azure Portal suddenly requiring OpenID Connect Scopes for a registered app's claims?

我在我工作的公司的 Azure 门户上注册了多个应用程序,它们具有以下可选声明:电子邮件、family_name、given_name 和 upn。当我添加这些声明时,一切都很顺利,没有错误或警告。已注册的应用程序用于验证 ASP.NET Core 2.2 应用程序。 returned ID 令牌包含这​​些声明,我可以在我的应用程序中使用它们。

不久前,我注意到在访问已注册应用程序的 'Token configuration' 页面时开始收到此警告: table 中的每个声明都有一个警告图标,上面写着 This claim required OpenID Connect Scopes to be configured through the API permissions page.

此外,在添加可选声明时,我现在收到此弹出窗口:

如果我在不选中该框的情况下按添加,我会在 'Token configuration' 页面上收到该警告,并且只有 User.Read 权限会添加到 API 权限。如果我检查它,警告就会消失,并添加额外的 profile 权限。

这个弹出窗口和警告似乎是最近出现的,但我没有更改那些已注册应用程序中的任何内容。无论警告是否存在,我仍然在 ID 令牌中得到声明。事实上,Microsoft documentation 说: The Microsoft Authentication Library (MSAL) currently specifies offline_access, openid, profile, and email by default in authorization and token requests. This means that, for the default case, if you specify these permissions explicitly, Azure AD may return an error. 这可以解释为什么我仍然收到索赔。

所以,我收到了警告,但一切正常,如果我明确指定 profile 权限,Azure AD 可能 return 出错。

我不太了解 AzureAD,我不确定是否应该在选中该框的情况下添加声明。为什么这个警告开始出现?处理此问题的最佳行动方案是什么?

这可能是门户、文档和库团队错位的情况。正如您所观察到的,默认情况下,MSAL 库将这些 OIDC permissions 添加到它们的令牌请求 API。

现在,当 MSAL 默认请求这些权限时,为什么您尚未在门户上添加的权限仍然被授予?答案是 dynamic consent - 一种 A​​zure AD 机制,可让您随时随地指定所需的权限。由于库默认请求这些权限,因此在您的情况下一切正常。

我的建议是检查您使用的特定 MSAL 库的 documentation/repository,看看他们是否建议明确添加它们(例如,在 MSAL.js 中,这留给开发人员,并且将以任何一种方式工作)。如果是这样,只需将它们也添加到 Portal 上,并消除警告。