具有管理员角色的 Azure AD 保护客户端应用程序调用 Api

Client app calls protected Api by Azure AD with Admin Role

我有点糊涂,我有以下实现:

ASP.net API 使用 Azure AD 保护,具有 Admin role 的用户只能调用此 API,这些角色在 Azure AD 中配置并分配给用户. API 有一个定义的范围 AccessApi.

Scopes  Who can consent     Admin consent display name     User consent display name   State 

api://xx  User              AccessApi                      AccessApi                 Enable

WebAssembly blazor 中开发的客户端应用程序在没有角色的 Azure AD 中注册和保护,它被配置为使用我的 Api 中的 AccessApi 范围。

API / Permissions name  Type       Description   Admin consent required    Status
myApi (1)   

AccessApi              Delegated     AccessApi              No

我的困惑是我是否需要为客户端应用程序分配管理员角色以获得将用于访问 API 或 API 范围的令牌 accessApi 就足够了没有任何角色?

知道客户端应用程序的用户是 API 的相同用户,只是角色不同。

由于同一用户同时使用API和客户端应用程序,是否可以通过客户端应用程序使用MS Graph获取JWT令牌并使用该令牌调用API?

如果你想根据角色控制用户对api的访问,那么你可以使用appRole。设置应用程序的appRole,然后将appRole分配给用户,那么只有分配了appRole的用户才能访问api.

接下来,转到企业应用程序并将 appRole 分配给用户。

此外,切勿尝试使用 ms graph api 的令牌来调用您的自定义 api。这是两个完全不同的api资源,不同的api资源需要申请不同的token!