博客
关于
auth
7月 28 2018

鉴权

你将了解-10种鉴权方法

什么是认证、授权、鉴权、权限控制

认证(Identification)
是指根据声明者所特有的识别信息,确认声明者的身份。
比如我们常见的认证技术:

  • 用户名和密码
  • 用户手机:手机短信、手机二维码扫描、手势密码
  • 用户的电子邮箱
  • 用户的生物学特征:指纹、语音、眼睛虹膜

授权(Authorization)
在信息安全领域是指资源所有者委派执行者,赋予执行者指定范围的资源操作权限,以便对资源的相关操作。
比如: web 服务器的 session 机制、web 浏览器的 cookie 机制、颁发授权令牌(token)等都是一个授权的机制。

鉴权(Authentication)
在信息安全领域是指对于一个声明者所声明的身份权利,对其所声明的真实性进行鉴别确认的过程。

权限控制(Access/Permission Control)
将可执行的操作定义为权限列表,然后判断操作是否允许/禁止。
对于权限控制,可以分为两部分进行理解:一个是权限,另一个是控制。权限是抽象的逻辑概念,而控制是具体的实现方式。

认证->授权->鉴权->权限控制

HTTP 基本鉴权

Token 鉴权

JWT(JSON Web Token)鉴权

单点登录(Single Sign On)

同域单点登录

  1. 客户端: 用户访问某个子系统时(例如 a.baidu.com),如果没有登录,则跳转至 SSO 认证中心提供的登录页面进行登录;
  2. 服务端: 登录认证后,服务端把登录用户的信息存储于 Session 中,并且附加在响应头的 Set-Cookie 字段中,设置 Cookie 的 Domain 为 .baidu.com ;
  3. 客户端:用户访问某个子系统(例如 b.baidu.com),客户再次发送请求时,携带主域名 Domain 下的 Cookie 给服务器,此时服务端就可以通过该 Cookie 来验证登录状态了;

非同域单点登录

  1. 客户端: 开始访问系统 A;

  2. 系统 A: 发现用户未登录,重定向至 CAS 认证服务(sso.com),同时 URL 地址参数携带登录成功后回跳到系统 A 的页面链接(sso.com/login?redirectUrl=a.baidu.com)

  3. CAS 认证服务: 发现请求 Cookie 中没有携带登录的票据凭证(TGC),所以 CAS 认证服务判定用户处于 未登录 状态,重定向用户页面至 CAS 的登录界面,用户在 CAS 的登录页面上进行登录操作。

  4. 客户端: 输入用户名密码进行 CAS 系统认证;

  5. CAS 认证服务: 校验用户信息,并且 生成 TGC 放入自己的 Session 中,同时以 Set-Cookie 形式写入 Domain 为 sso.com 的域下 ;同时生成一个 授权令牌 ST (Service Ticket) ,然后重定向至系统 A(a.baidu.com) 的地址,重定向的地址中包含生成的 ST(重定向地址:a.baidu.com?token=ST-345678)

  6. 系统 A: 拿着 ST 向 CAS 认证服务发送请求,CAS 认证服务验证票据 (ST) 的有效性。验证成功后,系统 A 知道用户已经在 CAS 登录了(其中的 ST 可以保存到 Cookie 或者本地中),系统 A 服务器使用该票据 (ST) 创建与用户的会话,称为局部会话,返回受保护资源;到这里客户端就可以跟系统 A 愉快的交往啦 ~

  7. 客户端: 开始访问系统 B(b.baidu2.com);

  8. 系统 B: 发现用户未登录,重定向至 SSO 认证服务,并将自己的地址作为参数传递,并附上在 sso.com 域下的 cookie 值是第五步生成的 TGC;

  9. CAS 认证服务: CAS 认证服务中心发现用户已登录,跳转回系统 B 的地址,并附上票据 (ST) ;

  10. 系统 B: 拿到票据 (ST),去 CAS 认证服务验证票据 (ST) 的有效性。验证成功后,客户端也可以跟系统 B 交往了 ~

OAuth 2.0

联合登录和信任登录

唯一登录

扫码登录

10. 一键登录(适用于原生APP)