了解下常见的用户认证鉴权方式

常见的用户认证鉴权方式如下,可以简单了解下,方便我们和后台沟通。

  • Cookie Session
  • JWT,Token 认证
  • OAuth2 认证
  • SSO 单点登录
  • 扫码认证

一、Cookie Session

1-1、大致流程
  • 1、使用浏览器访问服务端页面;
  • 2、服务端收到该客户端第一次请求后,会创建一个 session ,生产一个唯一 sessionId ;
  • 3、同时在响应请求中设置 cookie ,属性名为jessionid;
  • 4、客户端收到后会保存 jessionid ,再次请求时,会在 header 中设置,服务端可从请求头中获取;
  • 5、服务端验证获取的 sessionId 是否存在,即可验证是否是同一用户;
Cookie 流程
1-2、问题
  • 当浏览器禁用 cookie 后,基于 cookie 的 session 将不能正常工作,每次都将创建一个新的 session ,可通过url重写传递 sessionid。
  • 当用户量太多的时候,比方微博这种,一个系统保存上亿的 seessionId, 这么多用了系统均衡,也是很容易出现单点失败的可能性,那个负责 session 的机器挂了就全惨了

二、JWT,Token 认证

2-1、Token的认证流程:
  • 用户输入用户名和密码,发送给服务器。
  • 服务器验证用户名和密码,正确的话就返回一个签名过的Token(Token 可以认为就是个长长的字符串),浏览器客户端拿到这个Token。
  • 后续每次请求中,浏览器会把 Token 作为 HTTP Header 发送给服务器,服务器验证签名是否有效,如果有效那么认证就成功,可以返回客户端需要的数据。 特点: 这种方式的特点就是客户端的Token中自己保留有大量信息,服务器没有存储这些信息。
Token 认证流程
2-2、 JWT 概念:

JWT是 Json Web Token 缩写。它将用户信息加密到Token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证Token的正确性,只要正确即通过验证。

JWT包含三个部分: Header头部,Payload负载和Signature签名。由三部分生成Token,三部分之间用“.”号做分割

大致流程

  • 在头部信息中声明加密算法和常量,然后把Header使用Json转化为字符串
  • 在负载中声明用户信息,同时还有一些其他的内容,再次使用Json把在和部分进行转化,转化为字符串
  • 使用在Header中声明的加密算法来进行加密,把第一部分字符串和第二部分的字符串结合和每个项目随机生成的Secret字符串进行加密,生成新的字符串,此字符串是独一无二的
  • 解密的时候,只要客户端带着JWT来发起请求,服务端就直接使用Secret进行解密,解签证解出第一部分和第二部分,然后比对第二部分的信息和客户端穿过来的信息是否一致。如果一致验证成功,否则验证失败。
2-3、总结

JWT 适合做一次行验证,比方邮箱激活账号,Token 适合做 API 请求认证
我们移动端主要还是用的是 API 请求认证。

三、OAuth2 认证

OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。

3-1、大致流程
  • 先去第三方注册,获取类似 client_id,client_secret, redirect_uri 东东
  • 用户在页面点击登录后,后端会拿着上面这三样东西,拼接一个地址,跳转到第三方
  • 第三方校验 client_id,client_secret,redirect_uri
  • 通过后,第三方回调 redirect_uri,在url后面带上 token
  • 拿着 token 和client_secret,去第三方获取 acccessToken,
  • 然后系统就可以拿着 acccessToken 去第三方获取用户信息,然后就可以关联了
OAuth2 认证流程
3-2、好处

我们的系统不需要一个维护用户登录的的数据库表,系统多起来了,就非常方便,大家都去一个地方获取用户信息,后面衍生的 网关的概念,是把用户的权限都管理起来了

四、SSO 单点登录

单点登录 英文全称是 Single Sign On,简称就是 SSO,解释就是说:在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统,是为了解决 内部系统 一次登录 到处使用,共享 session 的问题

4-1、大致流程
流程
4-2、不同域名下的 SSO

这个时候可以通过 Oauth2 的方式去获取这个 Cookie,存到a的域名下,同样拿着这个 cookie 去 common session 服务器获取用户信息

4-3、解决的点
  • SSO 是解决 只需要登录一次,就可以访问其他相互信任的应用系统
  • SSO 适合公司内部多系统

五、扫码认证

5-1、大致流程
  • 网页端的二维码 本质是一个 url,比方是 https:/xxx?uuid=xxxxx, 这个uuid是生成的当前pc的唯一标示,
  • 然后会定时请求后端的API,假设这个请求叫 A 请求,根据返回的状态来做下一步动作
  • 当手机扫码后,会带上这个uuid和用户信息,发送一个请求给后端,后端拿到这个 uuid,就知道用户已经登录来,然后上面的 A 接口
  • 就会返回一个已经登录的状态,同时返回用户信息,这样 二维码页面会跳转到用户列表页,整个扫码登录流程完成。
扫码认证流程图

以上是常见的用户认证鉴权方式,目前我们移动端常用的是 Token 的认证方式。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容