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的使用
- 作用:HTTP接口测试工具
- 添加请求类型,以及请求网址,还有对应的Authentication和body进行测试
6.总结:这几天都在弄OAuth2,但是出现很多问题,都是自己细节上面的问题,也还是自己知识量不足,多动手验证,心态要平和;主要是熟悉了OAuth2的认证流程,以及简单的授权码模式代码实现
7.反思:其实不管在哪个工程里面的用户实体类都需要实现UserDetails接口,有着用户的获取权限方法,是否被锁,是否过期,是否禁止等等父类的方法;
在角色实体类中需要继承GrantedAuthority,以及继承获取自己权限名的方法;在之前的Jwt实现加密的时候是使用非对称RSA加密,认证服务器使用私钥加密,公钥解密;在OAuth2中是分为认证服务配置以及资源服务配置;在权限配置中需要配置自己的用户密码、密钥、授权范围、授权类型以及重定向地址;资源服务器相当于之前的配置类;在自定义登录逻辑中就是授权自己的角色权限,以及最开始的security登录账号和密码;在securityConfig中拦截发送的http请求
8.复盘:主要是对代码的理解
- 资源服务器的作用:为自定义的controller提供资源,首先是认证所有请求,过滤访问URI
- 授权服务器作用:设置客户的信息:客户端id,密钥,授权类型,授权范围,以及重定向地址
- 安全服务器:拦截访问请求