Azure AD使用id_Token v.1.0终结点交换Access_Token [英] Azure AD exchange access_token with id_token v.1.0 endpoint

本文介绍了Azure AD使用id_Token v.1.0终结点交换Access_Token的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我会画一个场景,需要一些建议:

我使用的是Azure AD(v1.0端点)、单页面应用程序(SPA)和Web API。SPA使用OpenID Connect建立用户身份,对用户进行身份验证,并接收后端Web API的id_tokenaccess_token

现在,我们不希望SPA根据在SPA应用中收到的id_token进行访问控制决策。

相反,SPA将access_token发送到后端Web API以访问它,现在我们希望后端Web API根据id_token中找到的roles声明做出访问控制决策,但后端没有从SPA收到该声明。

问题是,后端Web API是否可以将收到的access_token发送到Azure AD令牌终结点并接收用户的相关id_token,以便后端Web API接收包含用户的roles声明的id_token,以便做出访问控制决策?

推荐答案

您所描述的方法有几个问题:

  1. 应用程序角色将在本地客户端应用程序(SPA)上定义。虽然从技术上讲,你可以在清单中定义应用程序角色,但你会注意到,Azure门户不允许你将用户或组分配给本地客户端应用程序。(这在某种程度上是有道理的,因为正如您正确地说过的那样,您不想在本地客户端应用程序中进行任何访问控制。)
  2. 您无法执行您所描述的操作(将一个受众的access_token替换为另一个受众的id_token)。您可以执行令牌交换的一些变体,但在这种情况下它们都不会对您有所帮助。

相反,您应该做的是在Web API上定义应用程序角色。然后,将用户分配给Web API的相应应用程序角色。当这些用户登录到SPA,并且SPA代表他们获得Web API的访问令牌时,您会注意到访问令牌将包含roles声明,其中填充了适当的值。

摘要:

  1. 在Web API的应用程序注册下,在应用程序清单中(或直接在应用程序对象上,使用Azure AD PowerShell)定义您的appRoles
  2. 在Web API的企业应用程序下,为用户和/或组分配其对应的应用程序角色,并选择是否需要分配应用程序角色*。(或直接在ServicePrime对象上执行此操作。)
  3. 在SPA(应用程序对象)的应用程序注册下,将Web API添加为所需权限。
*如果您选择要求为Web API分配应用程序角色(在企业应用程序>属性下),则SPA将无法为未分配到Web API应用程序角色的用户获取访问令牌。如果选择要求分配应用程序角色,则未分配应用程序角色的用户将能够登录到SPA,并且SPA将能够代表他们获取Web API的访问令牌,但访问令牌将包含roles声明。

这篇关于Azure AD使用id_Token v.1.0终结点交换Access_Token的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆