美文网首页
Shiro+SessionId构建token鉴权体系

Shiro+SessionId构建token鉴权体系

作者: 企业信息化架构 | 来源:发表于2018-10-03 13:47 被阅读772次

    背景

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

    方案

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

    Token验证

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

    Token校验流程

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

    流程

    准备Maven文件

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

    实现Realm

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

    重写SessionManager

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

    配置Shiro

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

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

    相关文章

      网友评论

          本文标题:Shiro+SessionId构建token鉴权体系

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