范围/角色/组基于访问控制

13
我正在使用Azure Active Directory,试图理解文档here中描述的三种访问控制类型。每种方法的优缺点是什么,应该在什么情况下使用?
  • 基于范围的访问控制:使用我的清单文件中的oauth2Permissions部分来添加读取和写入权限:
  • {
      "adminConsentDescription": "允许应用代表登录用户对MyApi进行读取访问。",
      "adminConsentDisplayName": "对MyApi的读取访问",
      "id": "56d944c0-f3aa-4f80-9472-9c1414383abf",
      "isEnabled": true,
      "type": "User",
      "userConsentDescription": "允许应用代表您对MyApi进行读取访问。",
      "userConsentDisplayName": "对MyApi的读取访问",
      "value": "read_my_api"
    },
    {
      "adminConsentDescription": "允许应用代表登录用户对MyApi进行写入访问。",
      "adminConsentDisplayName": "对MyApi的写入访问",
      "id": "6d66a2bd-c8c7-4ee0-aef4-9424b51b4967",
      "isEnabled": true,
      "type": "User",
      "userConsentDescription": "允许应用代表您对MyApi进行写入访问。",
      "userConsentDisplayName": "对MyApi的写入访问",
      "value": "write_my_api"
    }
    
  • 基于角色的访问控制(RBAC):使用我的清单文件中的appRoles部分。
  • 基于组的访问控制:使用我的清单文件中的groupMembershipClaims部分。

相关问题:Azure 基于角色的访问控制(RBAC)中的角色和作用域有什么区别? - toraritte
2个回答

32

我认为范围(scopes)和角色/组别(roles/groups)之间最显著的区别是由谁决定客户端可以做什么。

  • 资源范围是由资源所有者(用户)通过同意屏幕向应用程序授予的。例如,客户端应用程序可以发布到我的时间线或查看我的朋友列表。
  • 用户角色和组别是由 Azure AD 目录管理员分配的。例如,用户可以提交费用报告或用户可以批准费用报告。

当外部应用程序想要通过公开的 API 访问用户数据时,通常会使用范围。它们决定客户端应用程序的操作权限。

基于角色或组的访问通常在应用程序内部使用,以确定用户可以进行哪些操作。


3

两种最流行的方法:

  • 基于角色的访问控制(Role Based Access Control) - 您在应用程序配置(Azure门户内)中为用户或组分配角色。然后,在代码中,您可以使用这些角色来授权用户访问您的应用程序的特定部分。您可以这样做:if (User.IsInRole("SuperAdmin")) {...}
  • 使用groupMembershipClaims的基于组的访问控制 - 它类似于以上方式,但是您要检查用户是否属于特定组

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接