token和JWT token区别、登录安全、页面权限、数据权限、单点登录

 直接区别:token需要查库验证token 是否有效,而JWT不用查库或者少查库,直接在服务端进行校验,并且不用查库。因为用户的信息及加密信息在第二部分payload和第三部分签证中已经生成,只要在服务端进行校验就行,并且校验也是JWT自己实现的。
 

 


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

组成:
JWT包含三个部分: Header头部,Payload负载和Signature签名。由三部分生成token,三部分之间用“.”号做分割。 列如 : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

1. Header 在Header中通常包含了两部分:type:代表token的类型,这里使用的是JWT类型。 alg:使用的Hash算法,例如HMAC SHA256或RSA.

{ "alg": "HS256", "typ": "JWT" } 这会被经过base64Url编码形成第一部分

2. Payload token的第二个部分是荷载信息,它包含一些声明Claim(实体的描述,通常是一个User信息,还包括一些其他的元数据) 声明分三类: 1)Reserved Claims,这是一套预定义的声明,并不是必须的,这是一套易于使用、操作性强的声明。包括:iss(issuer)、exp(expiration time)、sub(subject)、aud(audience)等 2)Plubic Claims, 3)Private Claims,交换信息的双方自定义的声明 { "sub": "1234567890", "name": "John Doe", "admin": true } 同样经过Base64Url编码后形成第二部分

3. signature 使用header中指定的算法将编码后的header、编码后的payload、一个secret进行加密。 例如使用的是HMAC SHA256算法,大致流程类似于: HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret) 这个signature字段被用来确认JWT信息的发送者是谁,并保证信息没有被修改 。

可参考地址:JWT实现token令牌中心__意大师的博客-CSDN博客
JWT技术简介和使用_秋天的童话_的博客-CSDN博客_jwt技术

服务端接收处理:

1. 解析JWT

2. 判断签名是否正确,根据生成签名时使用的密钥和加密算法,只要这一步过了就说明是payload是可信的

3. 判断JWT token是否过期,根据exp,判断是否是VIP,根据isVip

还有一种简单登录做法:不需要任何签名加密,直接用户名和密码登录后返回一个jwt token

token登录安全策略(中等)
(1)、首先调用服务端接口,返回一个时间有效期为5分钟的RSA公钥接口。  (2)、然后客户端按照一定格式使用公钥加密请求登录接口,返回token

(2)、首先调用服务端接口,返回一个时间有效期为5分钟的RSA公钥接口。 (2)、客户端和服务端使用一对对称秘钥AES,客户端进行按照一定格式使用AES进行签名,生成签名sign字符串,然后将登录信息和签名都加密发送到服务端   (3)、服务端先解密,然后验签,验签通过后返回token给客户端。


token续约,大概有以下几种:

1、重新设置令牌的过期时间:就和Tomcat 中的Session一样,此时令牌有状态,客户端携带令牌访问,资源服务器需要对令牌的过期时间进行判断,比如发现过期时间小于5分钟时,重新设置设置过期时间。

2、使用刷新令牌:直接重新设置访问令牌的过期时间,可能存在安全问题,如果被窃取了这个令牌,那么这个令牌可以一直用,所以可以使用刷新令牌机制,认证通过后,颁发访问令牌和刷新令牌,刷新令牌客户端自己保存,当访问令牌过期时,使用刷新令牌再申请一个新的访问令牌,这样就避免了一些安全问题。

可参考地址:Spring Security系列(27)- Spring Security Oauth2之令牌过期和续签问题解决方案(1)_云烟成雨TD的博客-CSDN博客_oauth2刷新令牌过期


经典用户角色权限老框架:spring security
可参考地址:Spring Security 详解_律二萌萌哒的博客-CSDN博客_springsecurity

(1)、前端展示权限页面流程
服务端:返回该用户可用资源列表


前端vue:
v-if="hasPermission(['goods:list:audit'])"

根据服务端返回资源跟page页面和button进行控制是否展示
 

(2)、服务端权限流程:用户根据角色,角色对应资源,通过拦截器或者切面方式,进行对当前用户角色包含的资源跟当前访问Controller方法的资源进行匹配,匹配成功就放行,失败就被拒





最新用户角色权限新框架:Sa-Token
主要解决:登录认证、权限认证、Session会话、单点登录、OAuth2.0 等一系列权限相关问题,框架针对踢人下线、自动续签、前后台分离、分布式会话……等常见业务进行N多适配,通过sa-token,你可以以一种极简的方式实现系统的权限认证部分,比spring security更加简单
官网地址:Sa-Token

MyBatis-Plus数据权限插件
实现思路:AOP注解和线程上下文变量传递参数到Mybatis-Plus SQL拦截器,使用JSqlParser AST SQL语法解析树操作Where动态添加过滤条件

服务端实现

拦截器实现:

获取用户数据权限,如图所示:


后台操作:

1、表数据



2、新增数据角色


3、给数据角色绑定数据权限


可参考其他作者文章地址:MyBatis-Plus数据权限插件_格一物的博客-CSDN博客_mybatis plus 数据权限插件

 

 

RBAC(Role-Based Access Control):基于角色的访问控制,现在主流的权限管理系统的权限设计都是 RBAC 模型,通过用户关联角色,角色关联权限,来间接的为用户赋予权限


OAuth 2.0:是一种授权机制,主要核心用来颁发令牌(token)           ----》经典单点登录技术
OAuth 引入了一个授权层,用来分离两种不同的角色:客户端和资源所有者。......资源所有者同意以后,资源服务器可以向客户端颁发令牌。客户端通过令牌,去请求数据。
业务场景:CSDN登录可以使用第三方登录,QQ、微信、微博、百度等等、用户点击任何一个进行授权登录

OAuth 2.0 规定了四种获得令牌的流程。你可以选择最适合自己的那一种,向第三方应用颁发令牌。下面就是这四种授权方式。
授权码(authorization-code)
隐藏式(implicit)
密码式(password):
客户端凭证(client credentials)

登录授权时序图:

76c443109b2d5c228897fe6e996707a3.png

可参考地址:https://blog.csdn.net/qq_54867440/article/details/125033266

单点登录--》实现方式OAuth 2.0
最常见的例子是:
1、我们打开淘宝APP,首页就会有天猫、聚划算等服务的链接,当你点击以后就直接跳过去了,并没有让你再登录一次
后台管理系统有多个


2、是在企业内部多个应用系统(如考勤系统、财务系统、人事系统等)场景下,用户只需要登录一次,就可以访问多个应用系统

第一种类型:H5、android、ios客户端单点授权登录,如图所示

 第二种类型,后台管理系统单点登录:如图所示:

1. 用户首次访问系统A时,需要进行登录。

2. 系统A带着用户登录信息重定向给认证系统。

3. 认证系统验证用户登录信息。

4. 验证通过后,返回一个token

token类似一种内部的通行证,包含了用户身份信息、登录状态和过期时间,在各个系统间共享。

5. 认证系统带着token重定向给系统A,得知用户是已登录状态。

6. 系统A向用户返回请求的资源。

7. 用户访问系统B时,需要进行登录。

8. 系统B通过共享的token,得知用户是已登录状态。

9. 系统B向用户返回请求的资源。

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值