基于组和基于角色的授权之间的 azure ad 区别

azure ad difference between group based and role based authorization

大家好,我最近开始研究 azure ad。我已经开始为我的 .net 核心 api 进行授权。我对 azure 广告角色和组有以下了解。

Azure AD 组。 组只是用户分组属于同一业务。 一个用户可以属于多个组。 每当添加新用户时,我们都可以将用户关联到不同的组。

.net core 的基于 Azure AD 组的授权 我们将在我们的 .net 核心应用程序上使用 api。因此,将以上 azure 广告组和我的 .net 核心应用程序结合在一起,我们可以获得基于 plociy 的授权。例如,某些组可以访问的 api 很少。 例如,

services.AddAuthorization(options =>
            {   
                options.AddPolicy("GroupsCheck", policy =>
                {
                    policy.AuthenticationSchemes.Add(JwtBearerDefaults.AuthenticationScheme);
                    policy.RequireAuthenticatedUser();
                    policy.Requirements.Add(new GroupsCheckRequirement("group id"));
                });
            });

因此,每当我在控制器顶部设置 [Authorize(Policy = "GroupsCheck")] 时,只有当用户属于相应的组 ID 时,他才能访问这些 api。

Azure AD 角色 可以将 Azure 广告角色分配给上述组。这些角色用于授予对 Azure 广告服务的访问权限。例如,一个角色可以访问虚拟机,而其他角色可以访问网络事物。因此,每当我们将角色应用于组时,该组中的相应用户将获得上述权限。

这是我的理解。如果我有错误的理解,请纠正我。

现在我的困惑从这里开始。

Groups 主要做两件事。第一个是我们可以在我们的 .net 应用程序中进行授权,第二个是我们可以使用组将用户分组在一起,然后我们可以分配角色。但让我感到困惑的是 .net 核心应用程序中基于角色的授权。 azure 中的 RBAC 是对不同 users/groups 的细粒度访问。我的 .net 核心应用程序中的 RBAC 与 azure 之间的关系是什么?

管理员同意

另一件事是,例如我有 azure ad 用户角色,我创建了 .net 核心应用程序并在 azure ad 中注册。现在我的应用程序需要访问 Microsoft Graph。因此,要让 Microsoft Graph 访问我的应用程序,租户管理员必须同意。例如,要读取租户应用程序中的所有组,应调用 Microsoft Graph。这是我对管理员同意的理解。

有人能帮我正确理解这些东西吗?任何帮助,将不胜感激。谢谢

What would be the relation between RBAC in my .net core app and azure?

Azure AD 角色和应用程序角色没有链接在一起。有多种方法可以做到这一点(请参阅 here),但这些方法是完全独立的。 Azure AD 角色更多地用于控制对 Azure 资源的访问,并不真正适用于特定于应用程序的角色(即在学校应用程序中,学生无法访问整个成绩 class)。

So to give Microsoft graph access to my app tenant admin has to give consent.

这是真的。 Microsoft Graph 基本上提供了一个 API 来访问目录中发生的所有事情。当然,因为有敏感信息,需要管理员的许可。