OAuth2 概念学习
-
2020-6-1学习
认证(登录)
-
定义
用户认证就是判断一个用户的身份是否合法的过程
-
身份认证方式
用户名密码登录、二维码登录、手机短信登录、指纹认证、人脸识别
-
目的
为了保护系统的隐私数据和资源,只有合法的用户才能访问该系统
会话
-
定义
用户认证通过之后,为了避免用户每次操作都进行认证可以将用户的信息保存在会话中。
-
方式
常见的有session方式、基于token方式
-
目的
系统为了保存用户的登录状态所提供的机制
授权
-
定义
授权是用户认证通过后根据用户的权限来控制用户访问资源的过程,拥有资源的访问权限则正常访问,没有则拒绝访问。
授权是为了保护资源,有没有权限访问;授权是认证通过之后发生的,控制不同用户访问不同资源
RBAC
-
基于角色的访问控制Role-Based Access Control
按照角色进行授权
if(用户.hasRole(总经理)){ 查工资 }
可扩展性不强,有变更的时候需要动代码,例如
if(用户.hasRole(总经理)||用户.hasRole(财务)){ 查工资 }
-
基于资源的访问控制Resource-Based Access Control
if(用户.hasPerission(查工资权限)){ 查工资 }
基于session的认证方式
基于session的认证方式流程:
- 用户认证成功后,服务端生成用户的相关数据保存在session(当前会话)
- 返回给客户端session_id存放到cookie中,这样客户端在访问时候带上session_id就可以验证服务端是否存在session数据,以此完成用户的合法校验
- 当用户退出系统或者session过期销毁时,客户端的session_id也就过期了
基于session的认证机制是由servlet规范定制的。
学习资料:
OAuth2协议规范: https://tools.ietf.org/html/rfc6749#section-4.1.1
OAuth2官网:https://oauth.net/2/
简书介绍: https://www.jianshu.com/p/227f7e7503cb
spring 官网:https://spring.io/projects/spring-security-oauth
spring oauth2 迁移指南:https://github.com/spring-projects/spring-security/wiki/OAuth-2.0-Migration-Guide
spring-authorization-server :https://spring.io/blog/2020/04/15/announcing-the-spring-authorization-server
spring-authorization-server :https://github.com/spring-projects-experimental/spring-authorization-server