我有一个 Angular 应用程序和 Python REST API 服务器。我创建了 2 个用于身份验证的 Azure AD 应用程序 - 一个 SPA Azure Ad 应用程序和另一个 Webapi Azure AD 应用程序。我已经从 Azure AD 应用程序 api:///Files.Read 公开了一个 API。我正在使用 msal v3。
身份验证工作正常,现在我必须实施授权。 因此,我在 Webapi Azure AD 应用程序中定义了角色,并在此应用程序本身中管理向用户分配角色。我希望 Angular 应用程序中的角色信息显示基于角色的视图/屏幕/界面。为了获取角色信息,我依赖 Microsoft Graph API,因为我不想从本地存储和会话存储存储和访问访问令牌。
如何生成通常可用于从 Graph API 和我的 Python API 服务器访问角色的访问令牌?是否有可能拥有一个通用的访问令牌?如果是,应该如何在 msal 配置中完成配置,以便为受众 - graph api 和 python api 生成访问令牌?
注意:无法为 Microsoft Graph 和 Web Api 等不同资源生成单个访问令牌。
否则,作为一种解决方法,您可以在一个访问令牌中获取登录用户的角色和范围,如下所示:
创建了一个 Microsoft Entra ID 应用程序并公开了一个 API:
并创建了应用程序角色:
将用户分配给角色:
对于使用以下参数生成的访问令牌的示例:
GET https://login.microsoftonline.com/TenantID/oauth2/v2.0/token
client_id: ClientID
grant_type: authorization_code
scope: api://xxx/.default
redirect_uri: RedirectURL
code: code
client_secret: Secret
访问令牌将包含角色和 scp 声明: