我正在使用Azure Active Directory,并尝试了解所描述的三种类型的访问控制here。每种方法有哪些优点和缺点,何时使用它们:
使用我的清单中的oauth2Permissions
部分进行基于范围的访问控制,我可以像这样添加读写权限:
{ "adminConsentDescription": "Allow the application read access to MyApi on behalf of the signed-in user.", "adminConsentDisplayName": "Read access to MyApi", "id": "56d944c0-f3aa-4f80-9472-9c1414383abf", "isEnabled": true, "type": "User", "userConsentDescription": "Allow the application read access to MyApi on your behalf.", "userConsentDisplayName": "Read access to MyApi", "value": "read_my_api" }, { "adminConsentDescription": "Allow the application write access to MyApi on behalf of the signed-in user.", "adminConsentDisplayName": "Write access to MyApi", "id": "6d66a2bd-c8c7-4ee0-aef4-9424b51b4967", "isEnabled": true, "type": "User", "userConsentDescription": "Allow the application write access to MyApi on your behalf.", "userConsentDisplayName": "Write access to MyApi", "value": "write_my_api" }
基于角色的访问控制(RBAC) - 使用我的清单中的appRoles
部分。
groupMembershipClaims
部分进行基于群组的访问控制。答案 0 :(得分:9)
我认为范围和角色/组之间最显着的区别是谁决定允许客户端做什么。
当外部应用程序想要通过公开的API访问用户的数据时,通常会使用范围。他们确定客户端应用程序可以做什么。
基于角色或组的访问通常在应用程序中用于确定用户可以执行的操作。
答案 1 :(得分:2)
两个最受欢迎的一个:
if (User.IsInRole("SuperAdmin")) {...}