spring security整合jwt,jwt+spring security

  spring security整合jwt,jwt+spring security

  00-1010背景方案概念图核心代码

  00-10-10最近客户对我们的系统做了一些漏洞扫描,最后总结出一般漏洞如下:

  用户重复登录界面并不授权对界面的非授权访问。针对以上漏洞,将解决方法记录在三篇文章中,供后续回忆和学习。本文首先处理用户重复登录漏洞。

  00-1010系统是以spring boot和spring security jwt为安全框架构建的。

  用户登录成功生成令牌给用户,同时存储在redis中(键值是用户名(ID))。该值是生成的令牌。用户再次访问系统。请求参数包含令牌信息。后台截取并通过过滤器进行比对。如果令牌匹配成功,它将被释放。如果匹配失败,则意味着两个令牌不一致。开始比较相应的时间戳。如果后一个时间戳大于前一个,则覆盖当前令牌(如果旧的是请求令牌重新进来的时间戳晚于当前redis中的令牌时间(令牌已更新),则判断被踢出的用户提示重新登录)

  

目录

 

  00-1010配置过滤器

  过滤器实施RepeatLoginFilter.java

  @ override protected void doFilterInternal(http servlet请求请求,HttpServletResponse响应滤波器链滤波器链)抛出ServletException,io异常{ String jwt=resolve token(请求);//重复登录只校验带有合法智威汤逊广告公司的放过验证码以及免鉴权的那些请求if (null==jwt null .equalsIgnoreCase(jwt) !这个。令牌提供者。验证令牌(jwt)){过滤器链。do过滤(请求、响应);返回;} if(isAccessAllowed(jwt)){过滤链。do过滤(请求、响应);返回;} //账号重复登录,跳转登录页面注销注销(响应);}/** * 重复登录核心校验* @param标记当前token * @返回真实的通过放行*/private boolean isAccessAllowed(字符串标记){ authentic ation authentic ation=this。令牌提供者。getauthentication(令牌);字符串redis标记=redis模板。价值得运营().获取(常量前缀_登录_用户认证。getname()).//redisToken为空说明第一次登陆放过并加入redis if(!字符串实用程序。haslength(redis令牌)){ redis模板。价值得运营().设置(常量前缀_登录_用户认证。getname(),token,86400,时间单位。秒);返回true} //redis标记和当前代币一致说明是当前登陆用户访问放过if(token.equals(redisToken)){返回true} //redis标记和当前代币不一致,比较两个代币的创建时间,如果当前代币大于再代币就说当前是最新的,放入存储并放过//否则就说明存储里已有最新的令牌,当前代币应该过期,不放行日期日期=这个。令牌提供者。getissueat(token);date redis date=this。令牌提供者。getissueat(redis令牌);如果(日期。(redis日期)之后){ redis模板。价值得运营().设置(常量前缀_登录_用户认证。getname(),token,86400,时间单位。秒);返回true }否则{返回false}}/***获取jwt/私有字符串解析令牌(http servlet请求请求){字符串承载令牌=请求。get头(“授权”);if(字符串实用程序。hastext(bearerToken)bearerToken。以( Bearer ){ return bearerToken开头。子串(7);}返回null}/** *返回退出信息到前台* @ param response */private void logout(http servlet response响应){ response。设置状态(http状态.禁止。value());回应。设置内容类型(媒体类型.应用程序_ JSON _ UTF8 _值);try { JSON对象结果obj=new JSON对象();resultObj.putOnce(data ,账号已在别的地方登录,请重新登录);response.getWriter().打印(结果对象。tostring());} catch(io异常e){ e . printstacktrace();}}到此这篇关于春天安全结合智威汤逊广告公司实现用户重复登录处理的文章就介绍到这了,更多相关spring security jwt重复登录内容请搜索盛行信息技术以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行它!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: