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

Difference between Scope, Role & Group in Azure AD MSAL

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

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

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

**Groups:**

API_Read_AppName --> Group1
API_ReadWrite_AppName --> Group 2

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

角色 --> 这是决定对我的受保护网站的访问级别的角色API

**Roles:**

ReadEMCS
ReadWriteEMCS

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

Role --> Group

ReadEMCS --> API_Read_AppName 
ReadWriteEMCS --> API_ReadWrite_AppName 

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

  1. 使用我们能够管理访问权限的组时,角色有什么用?
  2. 我们需要角色和组来管理访问的用例是什么?
  3. 什么是 Azure AD 中的作用域及其用途?

我假设您是在谈论“角色”的应用角色。

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

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

此外,如果您的企业应用启用了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。它定义了客户端访问您的网站所需的权限 API(服务端)。您可以将其视为最基本的权限。只有首先满足此条件,我们才会考虑验证群组声明或应用角色。