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_token
和access_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
,以便做出访问控制决策?
推荐答案
您所描述的方法有几个问题:
- 应用程序角色将在本地客户端应用程序(SPA)上定义。虽然从技术上讲,你可以在清单中定义应用程序角色,但你会注意到,Azure门户不允许你将用户或组分配给本地客户端应用程序。(这在某种程度上是有道理的,因为正如您正确地说过的那样,您不想在本地客户端应用程序中进行任何访问控制。)
- 您无法执行您所描述的操作(将一个受众的
access_token
替换为另一个受众的id_token
)。您可以执行令牌交换的一些变体,但在这种情况下它们都不会对您有所帮助。
相反,您应该做的是在Web API上定义应用程序角色。然后,将用户分配给Web API的相应应用程序角色。当这些用户登录到SPA,并且SPA代表他们获得Web API的访问令牌时,您会注意到访问令牌将包含roles
声明,其中填充了适当的值。
摘要:
- 在Web API的应用程序注册下,在应用程序清单中(或直接在应用程序对象上,使用Azure AD PowerShell)定义您的
appRoles
。 - 在Web API的企业应用程序下,为用户和/或组分配其对应的应用程序角色,并选择是否需要分配应用程序角色*。(或直接在ServicePrime对象上执行此操作。)
- 在SPA(应用程序对象)的应用程序注册下,将Web API添加为所需权限。
roles
声明。
这篇关于Azure AD使用id_Token v.1.0终结点交换Access_Token的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文