本文简单介绍了整体的安全体系。

1. spring security

1.1. 工作原理

扩展了一条FilterSecurityInterceptor chain, 放置在FilterSecurityInterceptor前。 编写了一个AlreadyLoginFilter,放置在UsernamePasswordAuthenticationFilter前。

FilterSecurityInterceptor在系统启动时,会从数据库抽取requestmap的记录,组织成InterceptedUrl的列表对象,存放在内存中。针对每次的访问执行基于spEL表达式的过滤判断。

2. spring security jwt

2.1. 工作原理

  1. 通过固定的端点(/api/login),获取用户的jwt(使用密钥和对称算法对用户信息加密后字符串)

  2. 增加一个Filter,过滤访问中的请求header,若有Authorization属性,则校验此jwt是否合法(尝试解密)

  3. 实现了应用的无状态化,与session和cookie无关联

3. spring security rest GORM

3.1. 工作原理

因jwt长度长,因此使用散列算法获取较短的密文,并保存进数据库。

校验时,改为去数据库比对短密文的方式。