调用后端 API 时是否使用 ID 令牌或访问令牌?

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

从 Azure AD 文档中我了解到 ID 令牌用于身份验证,访问令牌是您发送到后端 API 进行授权的内容。

但是我有几个API,它们根据登录用户的角色给出响应。我已经在应用程序角色下的服务主体中配置了角色,如下图所示。

enter image description here

当用户进行身份验证时,ID 令牌包含角色,如下所示。

enter image description here

目前,我在授权标头中发送 ID 令牌,然后后端解码并验证令牌,并根据角色发送适当的响应。

但是我找不到任何文档来证明这个解决方案的合理性。如果有更好/正确的解决方案来实现这一点,请指导我!或者有没有办法从访问令牌发送角色?

oauth azure-active-directory single-page-application microsoft-entra-id
1个回答
1
投票

您必须使用访问令牌来调用后端API。请参阅 Maria Paktiti 的此博客

如果您希望角色出现在访问令牌中,请尝试以下步骤:

创建 Microsoft Entra ID 应用程序并添加应用程序角色:

enter image description here

然后将角色分配给企业应用程序中的用户:

enter image description here

并授予API权限:

enter image description here

然后生成访问令牌和 ID 令牌,如下所示:

https://login.microsoftonline.com/TenantID/oauth2/v2.0/token

client_id:ClientID  
scope:api://ID/.default openid offline_access
grant_type:authorization_code  
code:code  
redirect_uri:https://jwt.ms
client_secret:Secret

当您解码访问令牌时,将显示角色:

enter image description here

即使在 ID 令牌中也会显示角色:

enter image description here

因此,要进行基于角色的授权,您可以使用访问令牌。

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