.net - 基于组和基于角色的授权之间的天蓝色广告差异
问题描述
嗨,最近我开始研究 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。这是我对管理员同意的理解。
有人可以帮助我正确理解这些事情吗?任何帮助,将不胜感激。谢谢
解决方案
我的 .net 核心应用程序中的 RBAC 和 azure 之间有什么关系?
Azure AD 角色和应用程序角色未链接在一起。有很多方法可以做到这一点(见这里),但它们是完全分开的。Azure AD 角色更多地用于控制对 Azure 资源的访问,并不真正适用于特定于应用程序的角色(即在学校应用程序中,学生无法访问整个班级的成绩)。
因此,要让 Microsoft 图形访问我的应用程序租户管理员必须给予同意。
这是真实的。Microsoft Graph 基本上提供了一个 API 来访问目录中发生的一切。当然,由于存在敏感信息,因此需要管理员的许可。
推荐阅读
- hyperledger-fabric - 如何设置内容/条件规则以在区块链中保存数据?
- python - AttributeError:“元组”对象没有属性“内容”
- javascript - 如何使用
- python - 如何在 Python 中“比较”两个列表?
- android - 在 Android 上创建和写入文件
- python - 为什么要在 Keras 中获取自定义 Dice 损失的 NaN 值?
- javascript - 正则表达式从 JS 文件中删除任何注释
- javascript - 如何在 javascript 中创建对象表?
- android - 主题偏好FragmentCompat
- r - R:使用“for循环”绘制多个图