嗨,我在C#中有一个带有独立Web API的angular 6应用程序,它可以验证登录用户的角色。对于Angular和Web API,注册都是分开的。不知何故,JWT Web令牌中的受众是作为Angular应用程序的注册客户端ID而不是资源URI来的。 有两个问题: 1.是否可以注册2个不同的应用程序有效吗? 2.如果是,为什么观众没有正确来。我已经检查了许多论坛,但未找到解决方案。 3.角色是在Web API的清单文件中定义的,它们是否能够进入JWT令牌? 这是角度为6的应用程序模块的示例
答案 0 :(得分:0)
- 我们可以同时注册2个不同的应用程序吗?
是的,这是有效的情况。 UI和后端API具有一个或多个应用程序注册取决于您的设置/方案。例如一种情况是,不仅暴露给Angular前端使用的API,还有其他应用程序(无论是今天还是将来)都将使用该API,而这些其他应用程序与Angular UI应用程序无关,这是设置单独的好方法应用注册。
- 如果是,为什么观众没有正确来。我已经检查了很多论坛,但没有找到解决方案。
这取决于您的代码。向Azure AD请求令牌时,您指定的资源/端点是什么。您没有在问题中包含太多代码,因此这是一个类似的示例,您可能会做或可能不会做类似的事情,但希望它可以给您一些想法。
Call an Azure AD protected Web API in an AngularJS Single Page App
与您类似的设置,并分别注册了API(ToGoAPI)和SPA。它使用AngularJS有点陈旧,但概念仍然相同。具体来说,请看一下App.js中设置了端点集合的部分(第25行,其中代码指定了endpointURL:To Go API的应用ID URI)
- 角色是在Web API的清单文件中定义的,是否可以进入JWT令牌?
简短的回答是。只要您已正确配置了应用程序清单,并且登录(或为其获取JWT令牌)的用户已被预先分配了一个或多个角色。
相关链接和示例应用程序提供了完整的步骤并逐步进行了操作
Authorization in a web app using Azure AD application roles & role claims
可以从Azure门户为用户分配应用程序角色。