1.1 认证、授权、鉴权和权限控制
认证 --> 授权 --> 鉴权 --> 权限控制
1.1.1 认证(identification)
认证主要是用来确认访问者的身份,确认这个人是不是这个人(常见实现方式是通过用户名和密码,以及身份证)
。为了确认用户的身份,防止伪造,在安全要求高的场合,经常会使用组合认证(或者叫多因素认证),也就是同时使用多个认证方式对用户的身份进行校验。
1.1.2 授权(authorization)
授权简单说就是服务方给予访问方一个共信的媒介,如session,cookie,token,银行卡,钥匙,门禁卡等,这个媒介不可被篡改,不可随意伪造,很多时候需要受保护,防止被窃取。之后访问方可以凭借该共信的媒介,去访问或享受服务方提供的服务。服务方提供该服务前,会对该共信的媒介进行鉴权,确认是否是它们给予的媒介,确认无误后,才会提供该服务。
比如你不能拿中国银行的卡去中国建设银行的ATM取钱。
1.1.3 鉴权(authentication)
鉴权是基于授权后的校验。如上所说,鉴权是用来鉴别共信的媒介是否是本服务方提供的共信媒介,是的话才会提供服务。因此,鉴权的实现方式是和授权方式有一一对应关系。对授权所颁发授信媒介进行解析,确认其真实性。
鉴权的输出是权限,即鉴权后能知道用户有什么权限。
常见鉴权的一些实现方式:如银行卡识别器可以用来识别银行卡是不是本银行的卡;门禁卡识别器,可以用来识别是不是本楼房的门禁卡;互联卡web领域会校验session/cookie/token的合法性和有效性。
1.1.4 权限控制(access/permission control)
如上所说,通过鉴权后可以知道用户拥有什么权限,这样就能知道用户能做哪些操作或者享受什么服务。比如你是尊贵VIP,那你可以免排队;比如你是会员,你可以打折;比如你是超级管理员,你可以随便增删改查所有数据。
有这个权限(身份)你才可以做这些事,享受这些服务,这就是权限控制。
1.1.5 举例场景
场景:比如你要坐高铁。
- 你需要先买票。买票的时候,会对你提供的身份证进行核对。
认证
- 买票成功后,会给你一张高铁票。
授权
- 去高铁站坐高铁的时候,会检查你的高铁票。
鉴权
- 你是买的01车厢01座位,所以你能坐在01车厢01座位这个位置。
权限控制
1.1.6 认证、授权、鉴权和权限控制的关系
认证、授权、鉴权和权限控制这四个环节是一个前后依次发生、上下游的关系,
认证–>授权–>鉴权–>权限控制
需要说明的是,这四个环节在有些时候会同时发生。 例如在下面的几个场景:
使用门禁卡开门:认证、授权、鉴权、权限控制四个环节一气呵成,在瞬间同时发生
-
用户的网站登录:用户在使用用户名和密码进行登录时,认证和授权两个环节一同完成,而鉴权和权限控制则发生在后续的请求访问中,比如在选购物品或支付时。
无论怎样,若从时间顺序方面来看,这四个环节是按时间前后、依次相继发生的关系。
1.1.7 认证和鉴权的关系
认证主要是对用户/访问者的真实身份进行认证,如检查身份证,与用户自身相关。认证通过后才能授权,在授权前面进行。
鉴权是与授权相关的,主要用来检查授权所授予的共信的媒介是否合法/通过,如银行卡,session这些。授权通过后才能鉴权,在授权后面进行。