OAuth协议
随着互联网的流行,对于提高网民的上网提验,是大厂比较关心的问题。而OAuth协议就是为此而生的。
OAuth协议经过了1.0时代,现在处于2.0时代。确切的说OAuth协议现在是2.1版本。
OAuth2.1相较于OAuth2.0在安全方面和易用方面提高了不少。主要思想是差不多的。但OAuth2和OAuth1是不兼容的。应该说OAuth1.0版本已经被废弃掉了。
早期的Spring团队在Spring Security框架中加入了OAuth2.0模块,但现在已经不在维护了。我之前的公司竟然还有人在用他们快照版。如果没有Spring Security,对于一个java开发人员,再找一个好用+牛逼+安心+oauth2的安全框架,还真有点难。
好消息就是Spring推出了Spring Authorization Server(授权服务),它与Spring Security是两个安全项目。Spring Security相当于一个安全框架思想,有完整的“认证”和“授权”框架思路。Spring Authorization Server(授权服务)要基于Spring Security之上使用。
Spring Authorization Server
可以看到Spring Authorization Server是一个比较新的项目。
Spring Authorization Server提供OAuth2.1和OpenID Connect 1.0 规范 和 其它相关的安全规范。是一个轻量级框架,开发人员可以在框架中做自己的定义化功能。
最新版本的Spring Boot 已经做了版本匹配。作者当前用的SpringBoot是3.3.0的,算是比较新的版本,在这个版本的依赖列表中,Spring Authorization Server的版本是1.3.0
好了,费话不多说。
OAuth服务
一般搭建分两个服务:认证服务,授权服务
认证服务主要用于给资源服务器用,当有客户端请求资源时,认证服务会进行认证客户端是否有资格获取资源。
授权服务主要用于给客户端授权,只有先获取权限才能请求资源,通俗点讲就是让你登录,给你发token
第一步先搭建授权服务器:
配置:Maven,SpringBoot3.3.0,Spring-Security-oauth2-authorization-server 1.3.0(这个在pom中是用starter代替掉了),最后是JDK17,当然jdk版本不是必须的,其它版本也是可以的,只要别太低。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactI