Shiro+SessionId构建token鉴权体系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shiro+SessionId构建token鉴权体系相关的知识,希望对你有一定的参考价值。

参考技术A 随着社会的发展,现在前端展示的方式多样,由原本网页单一形式,到现在的网页、小程序、androidios等多元化模式。由于前端展示的多元化,原有采用session有状态的认证方式已经无法满足需求,所以需要调整后台的技术框架,让系统能满足有状态认证和无状态token认证并存。

后台的管理系统是采用码云上开源的renren-security系统,该系统采用的认证框架是Shiro。考虑系统采用原本的权限控制采用Session方式,整体风险大且时间周期长,所以整合考虑采用SessionId作为token的方式,进行无状态的token认证方式。
登录时,POST用户名与密码到/login进行登入,如果成功返回一个会话ID,以会话ID作为token,失败的话直接返回401错误。之后用户访问每一个需要权限的网址请求必须在header中添加Authorization字段,例如Authorization: token,token为密钥。后台会进行token的校验,如果有误会直接返回401。

在login方法验证通过后,以SessionId作为token,通过json返回客户端。

重写Sessionmanager的getSessionId方法,获取token作为SessionId,同时修改request的“REFERENCED_SESSION_ID”为token,因为token为验证通过的sessionId,所以此request也会采用验证通过的Session进行获取验证和权限。

新建一个Maven工程,添加相关的依赖。

编写认证方法和授权方法。

重写继承DefaultWebSessionManager的SessionManager,修改getSessionId方法,通过获取的token作为SessionId。

配置Realm和SessionManager,还有关于路径的拦截等配置。

整体配置可以参考: https://blog.csdn.net/qq_34996727/article/details/81133729
SessionManager可以参考: https://blog.csdn.net/u011456867/article/details/80484559

以上是关于Shiro+SessionId构建token鉴权体系的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot笔记--整合Shiro实现前后台分离Token鉴权

django认证01---token

接口的鉴权cookiesession和token

接口的鉴权cookiesession和token多测师

会话管理1-Token

基于token机制鉴权架构