1.近几天在学习OAuth2协议,实际开发中用的最多的就是授权码模式

 

2.OAuth2的授权码模式流程:首先是用户去访问资源服务器,服务器会给用户一个授权码;用户根据授权码去访问认证服务器,服务器验证授权码是否正确,如果正确就会给用户以一个令牌;用户根据令牌再去访问资源服务器,验证令牌无误后,用户就可以访问

 

3.在进行OAuth2项目的时候会导入springcloud以及springboot的包,这个时候版本要保持一致,不然会出现,版本错误java.lang.NoSuchFieldError: BEST_MATCHING_HANDLER_ATTRIBUTE

 

4.org/springframework/security/web/servlet/util/matcher/MvcRequestMatcher报错怎么解决

原因:是自己在同时有springboot和springcloud依赖是没有引入父依赖,再就是应该导入父依赖

 

5.Postman的使用

  1. 作用:HTTP接口测试工具
  2. 添加请求类型,以及请求网址,还有对应的Authentication和body进行测试

 

6.总结:这几天都在弄OAuth2,但是出现很多问题,都是自己细节上面的问题,也还是自己知识量不足,多动手验证,心态要平和;主要是熟悉了OAuth2的认证流程,以及简单的授权码模式代码实现

 

7.反思:其实不管在哪个工程里面的用户实体类都需要实现UserDetails接口,有着用户的获取权限方法,是否被锁,是否过期,是否禁止等等父类的方法;

在角色实体类中需要继承GrantedAuthority,以及继承获取自己权限名的方法;在之前的Jwt实现加密的时候是使用非对称RSA加密,认证服务器使用私钥加密,公钥解密;在OAuth2中是分为认证服务配置以及资源服务配置;在权限配置中需要配置自己的用户密码、密钥、授权范围、授权类型以及重定向地址;资源服务器相当于之前的配置类;在自定义登录逻辑中就是授权自己的角色权限,以及最开始的security登录账号和密码;在securityConfig中拦截发送的http请求

 

8.复盘:主要是对代码的理解

  1. 资源服务器的作用:为自定义的controller提供资源,首先是认证所有请求,过滤访问URI
  2. 授权服务器作用:设置客户的信息:客户端id,密钥,授权类型,授权范围,以及重定向地址
  3. 安全服务器:拦截访问请求