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

时间:2021-04-26 13:51:54

标签: azure api azure-active-directory microsoft-graph-api roles

我有点困惑,我有以下实现:

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?

1 个答案:

答案 0 :(得分:1)

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

enter image description here

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

enter image description here

enter image description here

另外,千万不要尝试使用ms graph api的token来调用你自定义的api。这是两个完全不同的api资源,不同的api资源需要申请不同的token!