美文网首页
了解下常见的用户认证鉴权方式

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

作者: 天空中的球 | 来源:发表于2021-03-12 16:46 被阅读0次

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

  • 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 的认证方式。

相关文章

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

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

  • 鉴权方式整理

    最近在做 aPaaS 相关的项目,用到各种用户鉴权的方式。所以对鉴权方式做个整理。 常见的鉴权方式: HTTPBa...

  • mongo(十八:安全架构)

    MongoBD安全架构:认证鉴权审计加密 MongoDB 用户认证方式 MongoDB 集群节点认证 传输加密 落...

  • 常见的鉴权方式,你真的不想知道吗

    主要内容 鉴权的作用 几种常见的鉴权 各个鉴权的适用场景 一、什么是鉴权 鉴权是指验证用户是否有权利访问系统的行为...

  • Web安全之用户认证

    认证与鉴权是很多平台离不开的一个重要主题, 认证和鉴权如果没有做好,用户的信息很容易遭到泄露,为此此模块设计需要很...

  • 后羿框架-权限子框架

    目的 该子框架主要是统一认证与授权、鉴权的实现方式。 设计分析 在传统的单体应用中是将认证与授权、鉴权放在同一个系...

  • 微服务下的用户鉴权方案

    上一章讲了微服务下的用户身份认证《SpringCloud Gateway 身份认证》,这次主要讲如何进行鉴权。相对...

  • Harbor架构

    由于docker registry只提供了基本的镜像上传下载保存功能,在用户认证及鉴权、多用户管理、安全扫描、镜像...

  • nodejs鉴权

    三种常见鉴权方式 Session/CookieToken OAuth SSO session-cookie方式 由...

  • LiveNVR传统IP摄像机接入-网页直播实现跨域鉴权

    LiveNVR如何实现跨域鉴权 LiveNVR提供简单的登录鉴权,客户端通过用户名密码登录成功后,服务端返回认证t...

网友评论

      本文标题:了解下常见的用户认证鉴权方式

      本文链接:https://www.haomeiwen.com/subject/zkmwqltx.html