目录
背景
前面写过一篇springboot+security+jwt的实战篇,并没有把来龙去脉说清楚,所以想再写一篇把安全认证的前世今生彻底弄清楚。主要从security干什么,OAuth2.0的流程,Jwt是什么来阐述。
正文
一、Security的职责:
- Spring Security是Spring提供的一个安全框架,提供认证和授权功能,最主要的是它提供了简单的使用方式,同时又有很高的灵活性,简单,灵活,强大。
- Security本身是一套完整的认证和授权解决方案,只是我们在做系统的时候遵循了OAuth2.0规范,引入了其实现。现在流行的前后端分离,服务端不需要保持session管理,只需要验证token合法性。使用jwt生成token,是为了直接通过解密token直接获取用户信息,简化标准OAuth2.0的操作流程,也是当前服务端架构设计的实际需要。
- Authentication:用户认证,一般是通过用户名密码来确认用户是否为系统中合法主体;通过用户名和密码验证用户是否合法有效。
- Authorization:用户授权,一般是给系统中合法主体授予相关资源访问权限;就是权限管理和访问控制。
- SpringSecurity 采用的是责任链的设计模式,它有一条很长的过滤器链。在过滤器链中定义OAuth2.0的或者Jwt的具体实现。
二、OAuth2.0的流程
- 是一种授权协议,是规范,不是实现。
- 角色:资源所有者,客户端(第三方应用),首选服务器,资源服务器
- Spring Security OAuth2:Spring 对 OAuth2 的开源实现。
- 具体案例如百度开发平台,微信开发平台
- 主要是用来获取用户的信息
- 这里的令牌或者token仅仅是一个标识,不包含用户信息
三、Jwt是什么
JSON Web Token // 是一种具体的Token实现框架
是基于token的认证协议的实现
主要用来生成token,验证token合法性,是否过期,获取用户信息
token中包含用户信息
四、总结
- security是基础,OAuth和Jwt是具体实现,在security上生效
- OAuth2.0是规范
- jwt是token的实现
- 如果我们的系统要给第三方做授权,就实现OAuth2.0
- 如果我们要做前后端分离,就实现token就可以了,jwt仅仅是token的一种实现方式
- 三者的关系,我应该说明白了,希望对大家有帮助
最后,欢迎大家关注我的个人公众号,我会把经历分享出来,助你了解圈内圈外事。
同时也欢迎大家添加个人微信【shishuai860505】,我拉大家进我的读者交流群。