如何解决带有单页应用程序和ASP.Net核心Web API的Azure AD:如何访问所有相关令牌?
我们的应用程序是带有ASP.Net Core Web API的Angular SPA。身份由Microsoft身份平台(Azure AD)提供,身份验证由该身份提供。授权基于Web API "Application Roles"完成。这些“应用程序角色”保存在Azure AD目录(在应用程序清单中定义,并在租户域上分配给用户)。
根据these instructions,Angular SPA从Azure接收令牌。发出的相关令牌是:用于我的Web API的AccessToken
(在这些instructions之后),用于调用Graph API的AccessToken
(在相同的instructions之后)和IdToken
包含roles
声明中的“应用程序角色”(分配角色后,该ID令牌似乎会自动包含在内)。
我面临的问题是我需要将并发令牌传递给我的Web API,但是使用HTTP拦截器时,头请求中只能包含1个令牌。例如,我需要第一个AccessToken
来证明对Web API的身份验证,并且需要包含IdToken
以便Web API可以执行授权。
问:,当这些令牌都发布给SPA并且需要包含在对Web API的HTTP调用中时,如何使用多个令牌调用Web API?
解决方法
无论您是否要获取Microsoft Graph数据,用于获取应用程序角色的方式都是错误的。
ID令牌不能用于对Web API应用程序执行授权。您必须使用访问令牌。请参阅此answer,以了解ID令牌和访问令牌的用法。
因此,您必须使用访问令牌而不是id令牌。
在这种情况下,您可以在代表Angular SPA(前端)的Azure AD应用程序中配置应用程序角色。
实际上,您应该在代表ASP.Net Core Web API(后端)的Azure AD应用程序中配置应用程序角色。然后,您可以在Web API的AccessToken中获得roles
声明的“应用程序角色”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。