MJingv / jehol-person-blog

Jehol's Blog 🙋 (hexo+react)
https://mjingv.github.io/JeholBlog/
0 stars 1 forks source link

前端鉴权 #99

Open MJingv opened 8 months ago

MJingv commented 8 months ago

定义:前端鉴权(authentication)是指在前端(客户端)对用户进行身份验证和授权的过程

前端鉴权通常有以下几个方面:

  1. 用户认证(authentication)。验证用户身份的过程。

    • 常见方式:用户名&密码,社交登陆(google、fb等),单点登录(sso)
    • 前端需收集用户信息发送到后端验证
  2. 令牌管理(token management)用户认证成功后生成一个token返回给前端。

    • 前端保存在cookie或web storage。
    • token包含用户身份信息和权限等
    • 前端需检查token的有效期,按需刷新
  3. 访问控制(access control)前端根据用户身份和权限来控制访问操作权。

    • 前端可以权限检查,保护路由来实现
  4. 安全性考虑。

    • 可使用https保证通信安全性,注意xss(cross-site scripting)跨站脚本攻击,csrf(cross-site request forgery)跨站请求伪造
MJingv commented 8 months ago

前端鉴权的几种方式

  1. seesion-cookie

    • http是无状态的
    • 过程:后端生成session,前端保存透传sid,根据sid找session判断是否合法
    • 弊端:服务端解析session耗时大,cookie被伪造就是csrf
  2. token- JWT(https://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html

    • json web token
    • 三部分组成:header+payload+signature
    • token放cookie里无法跨域,可放http请求头里authorization,或者post的body里
    • 缺点:无法中途废止某个token,直到过期
  3. token-OAuth2.0(https://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html

    • 目的:安全授权、资源共享
    • 一般用在第三方登录授权。eg:网站使用github登录
    • oauth2.0的4种用户授权方法:授权码模式、简化模式、密码模式、客户端模式
  4. SSO(单点登录)single-sign-on

    • sso需要独立的认证中心passport统一管理
    • 流程demo:
    • 系统a访问无权限,跳认证中心登录,创建授权token,跳回系统a
    • 系统a拿刚才的token取sso验证中心看token是否有效
    • 系统b未登录,跳认证中心,认证中心发现已登录,跳回系统b,