首页 > 解决方案 > 基于组和基于角色的授权之间的天蓝色广告差异

问题描述

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

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

基于 Azure AD 组的 .net 核心授权, 我们将在我们的 .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 广告服务的访问权限。例如,一个角色可以访问虚拟机,而其他角色可以访问网络事物。因此,每当我们将角色应用于组时,该组中的相应用户将获得所述权限。

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

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

小组主要做两件事。第一个是我们可以在我们的 .net 应用程序中进行授权,接下来是我们可以使用组将用户分组在一起,我们可以分配角色。但令我困惑的是 .net 核心应用程序中基于角色的授权。Azure 中的 RBAC 是对不同用户/组的细粒度访问。我的 .net 核心应用程序中的 RBAC 和 azure 之间有什么关系。

管理员同意

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

有人可以帮助我正确理解这些事情吗?任何帮助,将不胜感激。谢谢

标签: .netazureazure-active-directorymicrosoft-graph-apiazure-rbac

解决方案


我的 .net 核心应用程序中的 RBAC 和 azure 之间有什么关系?

Azure AD 角色和应用程序角色未链接在一起。有很多方法可以做到这一点(见这里),但它们是完全分开的。Azure AD 角色更多地用于控制对 Azure 资源的访问,并不真正适用于特定于应用程序的角色(即在学校应用程序中,学生无法访问整个班级的成绩)。

因此,要让 Microsoft 图形访问我的应用程序租户管理员必须给予同意。

这是真实的。Microsoft Graph 基本上提供了一个 API 来访问目录中发生的一切。当然,由于存在敏感信息,因此需要管理员的许可。


推荐阅读