Difference Between "Authentication" and "Authorization"

了解「验证」和「授权」的差别

前言

验证(Authentication)与授权(Authorization)是访问控制中两个常被混淆的概念,分别代表两个问题:你是谁?你被允许做哪些事?同时也将介绍几种常见的授权模式,例如 RBAC 与 ABAC 管理授权。

饭店背后的验证与授权

饭店服务饭店系统櫃台人员饭店客人饭店服务饭店系统櫃台人员饭店客人出示身份证明验证身份 + 订房资讯验证成功发放钥匙(依照身份等级)使用钥匙启用服务验证钥匙授权范围

抵达饭店后,柜台人员要求出示证件以便「验证」订房资料与身份,验证成功后拿到饭店钥匙,钥匙可以访问饭店各种服务,这把钥匙「授权」饭店客人使用饭店的服务,VIP 钥匙、员工钥匙、普通客人钥匙……不同钥匙有各自的授权范围。

授权的模式

权限管理其实一般人就有机会接触到,像是社群媒体设置中的「谁能看我的文章?」就是一种授权的体现。有许多现成模式可用于管理权限,而不同模式有各自的优劣,甚至能够混合使用。

基于属性的存取控制 Attribute-Based Access Control

ABAC 适合细致灵活的权限控制,高度的灵活性、细粒度和动态性,能有效应对复杂的访问控制需求。

Joe

Eric

Mary

Hank

Alice

客房

健身房

豪华休息室

仓储区

后台管理系统

基于角色的存取控制 Roles-Based Access Control

RBAC 简化权限管理、增强可管理性、提供灵活的权限分配以及支持动态权限管理。

Joe

Guest

Eric

Mary

VIPGuest

Hank

Staff

Alice

Admin

客房

健身房

豪华休息室

仓储区

后台管理系统

总结

  • Authentication 验证:确认用户身份。
  • Authorization 授权:确认用户有权访问什么内容。
  • Authorization Scope 授权范围:用户可存取的资源或可执行的操作范围。
  • Access token 存取权杖:存取资源的通行证。

延伸阅读