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

Vij*_*udi 3 .net azure azure-active-directory azure-ad-msal

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

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

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

**Groups:**

API_Read_AppName --> Group1
API_ReadWrite_AppName --> Group 2
Run Code Online (Sandbox Code Playgroud)

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

角色--> 这是确定受保护 WebAPI 的访问级别的角色

**Roles:**

ReadEMCS
ReadWriteEMCS
Run Code Online (Sandbox Code Playgroud)

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

Role --> Group

ReadEMCS --> API_Read_AppName 
ReadWriteEMCS --> API_ReadWrite_AppName 
Run Code Online (Sandbox Code Playgroud)

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

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

All*_* Wu 6

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

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

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

此外,如果您的企业应用程序启用了“需要用户分配”,那么我们可以选择一起使用应用程序角色。

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

  1. 当使用我们能够管理访问的组时,角色的用途是什么?

Roles 声明不是必需的。

  1. 我们需要角色和组来管理访问的用例有哪些?

这取决于你的需要。

  1. Azure AD 中的范围是什么以及它的用途是什么?

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