【问题标题】:Client app calls protected Api by Azure AD with Admin Role具有管理员角色的 Azure AD 调用受保护的 Api 客户端应用程序
【发布时间】:2021-07-19 21:42:33
【问题描述】:

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

使用 Azure AD 保护的 ASP.net API,管理员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 和客户端 App,客户端 App 是否可以使用 MS Graph 获取 JWT 令牌并使用该令牌调用 API?

【问题讨论】:

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


    【解决方案1】:

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

    接下来,进入企业应用,将 appRole 分配给用户。

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

    【讨论】:

    • 顺便说一句,创建app角色的是你的api应用程序。
    • 感谢您的回复,我已经创建了 Approle 并分配给用户,我的困惑是我是否需要将 Approle 添加到客户端应用程序中?
    • 所以基本上,客户端应用程序只需要访问 Api 中定义的范围?
    • @ikenahim 让我考虑一下,您应该将应用角色添加为客户端应用程序的权限。稍等,我去Azure广告看看。
    • @ikenahim 刚看了一下,api应用的app角色不需要添加到客户端应用中。您只需要将api应用的scope name作为委托权限添加到客户端应用即可。
    猜你喜欢
    • 2021-07-16
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 2020-02-19
    • 1970-01-01
    • 2020-06-11
    • 2015-07-29
    相关资源
    最近更新 更多