Azure 应用程序注册时的 API 权限问题

ATO*_*ATO 7 azure azure-active-directory

我在 Azure Active Directory -> 应用程序注册下注册了一个 API 应用程序。此 API 应用程序公开了可由组织内的客户端访问的端点。客户端不是用户,而是将访问端点的后台服务。

当我尝试授予客户端访问 API 应用程序的 API 权限时,我看到应用程序权限被禁用/变灰。设置 API 权限时是否需要做一些不同的事情。

请看附图。

有没有人遇到过这个问题,或者我在做什么傻事。我们组织中的 Azure 管理员告诉我他无法帮助解决这个问题,因为他以前从未见过这样的事情。

在此处输入图片说明

Roh*_*gal 6

很可能您还没有为您的应用程序注册定义任何角色(即应用程序权限),因此当您尝试为客户端应用程序添加权限时,您只会看到一个委托权限选项。

如何定义角色/应用程序权限

转到 Azure 门户 > Azure AD > 应用注册 > API 应用程序注册 > 清单

在 Manifest JSON 中找到“appRoles”集合,如果它为空,请在此处添加您自己的 appRoles。例子:

"appRoles": [
        {
            "allowedMemberTypes": [
                "Application"
            ],
            "description": "Apps that have this role have the ability to invoke my API",
            "displayName": "Can invoke my API",
            "id": "fc803414-3c61-4ebc-a5e5-cd1675c14bbb",
            "isEnabled": true,
            "lang": null,
            "origin": "Application",
            "value": "MyAPIValidClient"
        }
    ]
Run Code Online (Sandbox Code Playgroud)

请注意,我将“allowedMemberTypes”保留为“应用程序”,因此它只能用作应用程序权限。另一种可能性是将“用户”作为 allowedMemberType,但这是针对不同的用例,当您想为用户分配角色而这不是您要查找的内容时。

现在,如果您转到要授予此角色(应用程序权限)的客户端应用程序注册,您应该能够看到“应用程序权限”已启用。

您还应该能够看到应用程序权限“MyAPIValidClient”,其描述可供选择。现在我在上面的例子中只定义了一个 Application Permission,但是正如你所看到的,它是一个数组,所以你也可以定义多个。只需确保为每个应用程序权限生成新的 GUID 作为“id”分配。

在此处输入图片说明