.net - Azure AD MSAL 中的范围、角色和组之间的区别

标签 .net azure azure-active-directory azure-ad-msal

我试图了解 Azure AD 中的角色和组、范围之间的区别。

我正在尝试在 Azure AD 中创建 protected Web API,如果我的理解有误,请纠正我。

--> Active Directory组已创建,需要访问权限的用户将被添加到组中,如果以下组规划不正确,请更正。

**Groups:**

API_Read_AppName --> Group1
API_ReadWrite_AppName --> Group 2

我假设创建了这两个组,一个是读取的,另一个是读写的,然后想要访问我 protected WebAPI 的用户将被添加到这些组中

角色 --> 这是确定 protected WebAPI 的访问级别的角色

**Roles:**

ReadEMCS
ReadWriteEMCS

我将创建上述角色并将这些角色分配给上面创建的组:

Role --> Group

ReadEMCS --> API_Read_AppName 
ReadWriteEMCS --> API_ReadWrite_AppName 

我对上述设置感到困惑,因为我的组已经具有读取组和读写组,并且用户将被添加到这些组中,并且根据组中将具有相应访问权限的用户,我的角色在我的情况下在做什么?我是否需要角色,因为在这种情况下,访问权限已由组维护。

  1. 当使用我们能够管理访问权限的群组时,角色有何用途?
  2. 在哪些用例中我们需要角色和组来管理访问权限?
  3. 什么是 Azure AD 中的范围及其用途?

最佳答案

我假设您正在谈论“角色”的应用程序角色。

应用角色和组声明具有相同的效果。在某种程度上,他们的角色是重复的。因此,您无需创建应用角色并将其分配给组。

通常如果用户组太多,超过两百个,那么组 id 不会直接包含在 jwt token 中,您可能需要使用 Microsoft Graph 来获取用户的组。这有点复杂,在这种情况下我们可以选择使用应用程序角色。

此外,如果您的企业应用有 User assignment required启用后,我们就可以选择一起使用应用角色。

简而言之,您可以灵活选择使用应用角色和群组声明。您甚至可以将它们组合起来,例如验证组声明和应用程序角色。

  1. What are Roles used for when using groups we are able to manage access ?

角色声明不是必需的。

  1. What are the usecases where we need a Role & Groups to manage access ?

这取决于您的需求。

  1. What is a Scope in Azure AD and what it is used for ?

范围是 setting specific to web APIs 。它定义了客户端访问您的 Web API(服务端)所需的权限。你可以把它看成是最基本的权限。仅当首先满足此条件时,我们才会考虑验证组声明或应用角色。

关于.net - Azure AD MSAL 中的范围、角色和组之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67876460/

相关文章:

c# - IronPython.Runtime.Exceptions.ImportException : No module named os

c# - 在 C# 中对任意大的正整数进行位计数

用于监视 VPN 隧道状态的 Azure Monitor 指标

c# - 无法从 C# 使用 AAD 连接到 Azure SQL 数据库

c# - 如何使用 GET 请求查询 management.azure.com?

c# - LINQ 查询后将数据从 var 复制到 DataTable

c# - 缓存信息存储在 ASP.NET 中的什么位置?

Azure DNS 区域 : What should I do so that my custom DNS will be used instead of the Azure DNS with IP address 168. 63.129.16?

powershell - 使用 FTP 将文件发布到 Azure Web App 时出错

vb.net - Azure Active Directory B2C - AADB2C - AADB2C90079 : Clients must send a client_secret when redeeming a confidential grant