为什么Azure门户突然需要OpenID Connect范围才能注册的应用程序声明?

问题描述

我在我工作的公司的Azure门户上注册了多个应用程序,这些应用程序具有以下可选声明:电子邮件,家庭名称,给定名称和upn。当我添加这些声明时,一切正常,没有错误或警告。已注册的应用程序用于验证ASP.NET Core 2.2应用程序。返回的ID令牌包含这​​些声明,我可以在我的应用程序中使用它们。

不久前,我注意到访问注册应用程序的“令牌配置”页面时开始收到此警告:

These claims (email,upn,family_name,given_name) require OpenID Connect Scopes to be configured through the API Permissions Page. Go to API Permissions

表格中的每个声明上都有一个警告图标,上面写着This claim required OpenID Connect Scopes to be configured through the API permissions page

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

Some of these claims (family_name,given_name,upn) require OpenId Connect scopes to be configured through the API permissions page or by checking the box below. Turn on the Microsoft Graph profile permission (required for claims to appear in token).

如果我在不选中复选框的情况下按添加,则会在“令牌配置”页面上收到该警告,并且仅将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可能会返回错误。

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

解决方法

这可能是门户网站,文档和库团队错位的情况。如您所见,默认情况下,MSAL库将这些OIDC permissions添加到其令牌请求API中。

现在默认情况下,当MSAL请求这些权限时,为什么仍会授予您尚未在Portal上添加的权限?答案是dynamic consent-一种Azure AD机制,可让您指定旅途中所需的权限。由于该库默认情况下会请求这些权限,因此在您的情况下一切正常。

我的建议是检查您使用的特定MSAL库的文档/存储库,并查看他们是否建议显式添加它们(例如,在MSAL.js中,这留给开发人员使用,无论哪种方式都可以使用)。如果是这样,只需将它们也添加到门户网站上,并摆脱警告。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...