Spring :SpringSecurity初探

什么是Spring Security

是个安全框架,就是用来验证身份和权限的那种。这个框架使用十分广泛,但是并不是很好理解,我在公司的新项目中就需要使用这个框架进行用户身份的验证和识别,并且这个需求要与JWT进行整合使用。

什么是JWT

JWT是Json Web Token的简称,我比较喜欢叫他用户令牌,用户在访问一些需要授权的地址的时候就需要在http的header上面携带Token,这样服务器就能够认识这个用户,并且了解他所拥有的权限。

Token的来源就是用户的登录,用户在登录的时候,服务器在验证了用户名和密码之后就会生成一个Token。

JWT包含这些部分:头部,明文负载,加密签名。这三部分被编码为Base64的形式,之间使用点.连起来,是长长的一串,通过Base64解码可以直接得到前两部分的具体内容,一般会包括一些类似于签发人,加密算法等相关内容,服务器可以通过这些内容验证一个用户的身份。

使用JJWT库可以很方便的生成一个JWT,这个后续在详细说明。

Spring Security工作流程

在用了一下之后,粗略的整理了一个思维导图,是这样的:
Spring :SpringSecurity初探

首先,用户发送了一个请求,请求被拦截器拦截,如果是登陆地址的拦截器,他就会将用户名和密码封装到一个对象,然后转交AuthenticationManager通过authenticate方法认证,AuthenticationManager并不会认证这个对象,而是寻找可以处理此对象的Provider,Provider同样实现了authentic方法,同时也实现了support方法,AuthenticationManager通过support方法寻找合适的Provider对这个对象进行认证。