伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 教育考试 » 文章详细 订阅RssFeed

【java】使用jwt进行认证授权

来源:本站原创 浏览:103次 时间:2022-12-09
传统的web应用使用session来维护用户与服务器之间的状态,用户提交用户名密码到服务器,服务器生成会话id,并将验证通过的用户信息存到session中(内存or数据库),会话id会写出到cookie。

用户登录之后的操作,都会附带包含sessionId的cookie,服务器根据用户端传来的sessionId获取用户信息,会话的有效期,包括用户登出等操作都依赖对session的操作,如下图:----
基于session的认证用户信息存在了服务端内存中,在分布式环境中session是需要同步的。出现了基于token的认证方式,其实本质和session没什么区别。用户提交登录信息后,服务端验证通过后颁发令牌。下图是以redis为例,将token和用户信息保存到redis,客户端再次访问服务端时,会携带token,服务端通过token获取用户信息。会话的有效期,用户的登出只需要操作redis中的token即可,如下图:

当然了,token本身也是可以包含一些用户非敏感信息减少查库,包含数字签名以防数据篡改,下面看下jwt(json web token)。----
从名称可以看出jwt还是一个token,它有自己的规范,由标头.有效载荷.签名组成。头用来描述散列算法,然后是用户数据,最后是一个数字签名。

----
先来看下jwt的java实现。

com.auth0java-jwt3.10.2

使用jwt通常只需要两个步骤,1通过jwt来生成token,2验证token。

JwtUtil String = String = String MapStringStringclaimsAlgorithm algorithm = Algorithm.JWTCreator.Builder builder = JWT..withIssuer.withExpiresAtDateUtils.Dateclaims.forEachbuilder::withClaimbuilder.signalgorithmException eRuntimeExceptioneMapStringStringString tokenMapStringStringret = Maps.Algorithm algorithm = Algorithm.JWTVerifier verifier = JWT.algorithm.withIssuer.buildDecodedJWT jwt =  verifier.verifytokenMapStringClaimmap = jwt.getClaimsRuntimeExceptioneret

以上就是一个jwt的简单示例,客户端携带token请求时,服务端可以校验jwt的签名及有效时间,校验通过则放行,否则拒绝请求。
----优点:可以看到使用jwt自身就可以完成认证,可以减少资源连接,也可以避免跨域认证请求,自带信息也可以用于数据传递。
缺点:可以看到一旦生成token,就无法回收,token的管理(刷新有效期&登出)需要其它补偿机制(如使用redis管理token);默认有效载荷只是经过base64编码,只是为了方便传输,并未加密(也可以自行加密),敏感数据不应该放到jwt中。


  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net

关闭

关闭