为 MS graph api 和自定义 api 生成通用访问令牌

问题描述 投票:0回答:1

我有一个 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 生成访问令牌?

angular azure-active-directory azure-ad-msal microsoft-entra-id msal-angular
1个回答
0
投票

注意:无法为 Microsoft Graph 和 Web Api 等不同资源生成单个访问令牌。

  • 一个访问令牌只能有一个 aud,不能有两个或更多。
  • 访问令牌中的 aud 声明特定于为其颁发令牌的 API 或资源。
  • 因此,要访问 Microsoft Graph 和 Web Api,您需要生成两个不同/不同的访问令牌。

否则,作为一种解决方法,您可以在一个访问令牌中获取登录用户的角色和范围,如下所示:

创建了一个 Microsoft Entra ID 应用程序并公开了一个 API:

enter image description here

并创建了应用程序角色

enter image description here

将用户分配给角色:

enter image description here

对于使用以下参数生成的访问令牌的示例:

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

enter image description here

访问令牌将包含角色和 scp 声明:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.