调用后端API时使用ID Token还是Access Token?

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

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

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

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

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

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

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

注意:您必须使用访问令牌来调用后端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

当我解码访问令牌时,会显示角色:

enter image description here

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

enter image description here

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

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