c# - 使用 Azure AD 和应用程序角色保护 Angular 和 .Net Core API
问题描述
我的系统由 Angular 前端和 .Net Core API 后端组成。两者都在 Azure 门户中注册为单独的 Active Directory 应用程序。
因此,这两个应用程序都受 Azure AD 保护。API 由 Angular 前端经过身份验证的用户公开和使用。
问题是 - 我希望用户拥有不同类型的用户角色(用户/版主/管理员)。这些角色将根据用户角色使某些 API 端点可访问或不可访问。用户角色也会塑造 Angular 上的 UI。
根据我的研究,我似乎可以在 Azure AD 上使用称为应用程序角色的东西,但是我不知道如何实现它们。
我有以下问题-
- 应在哪个已注册的 Azure AD 应用程序(API 或 Angular)上定义应用程序角色?
- 我将如何访问这些角色 - 它们是包含在不记名令牌中还是我需要调用 Microsoft Graph API 来检索它们?
解决方案
应在哪个已注册的 Azure AD 应用程序(API 或 Angular)上定义应用程序角色?
我会说在 API 应用程序上注册它们。无论如何,您无法在前端强制执行这些角色,因此您至少需要在后端对它们实施授权检查。
我将如何访问这些角色 - 它们是包含在不记名令牌中还是我需要调用 Microsoft Graph API 来检索它们?
如果您在 API 应用程序中定义它们并将它们分配给用户,它们将位于访问令牌中。如果通过隐式流获得令牌中的数量会有一些限制,但如果你有像你提到的 3 一样,你应该没问题。
推荐阅读
- r - 如何删除每个 group_by 中的最后一行?
- haskell - Haskell中是否存在垃圾thunk的固有“携带成本”?
- python - 关于如何在单词列表上创建随机森林分类器的任何建议?
- spring-boot - liquibase.integration.spring.SpringLiquibase 可从 Spring Boot 中的 2 个位置错误获取
- python - int() 参数必须是字符串、类似字节的对象或数字,而不是“元组”
- java - 如何按逐行读取的字母字符串数组跳过和排序
- c - 如何传递类型泛型函数指针?
- javascript - RequireJS - 尚未为上下文加载模块名称“wget”
- r - 当正则表达式的一部分要保留在后续拆分的字符串中时,如何使用正则表达式拆分 R 中的字符串?
- javascript - 遍历 fetch() 调用列表