赞
踩
目前正在出一个SpringCloud进阶
系列教程,含源码解读
, 篇幅会较多, 喜欢的话,给个关注❤️ ~
前段时间拖更了,主要事情比较多和杂,不多废话了,直接给大家开整吧~ 本节重点是给大家介绍Oauth2,将会带大家从0到1搭建一个 SpringCloud
项目,以及整合Oauth2 Server
,实现基本的授权和认证功能。
跟往常一样,在学习新知识前,首先明白它是啥?
我相信大部分人应该都对它都有了解,甚至使用过。如果你没有亲自搭建过这样的服务,但是在对接第三方平台的时候,首先需要去进行服务认证,在大多数的认证服务中,很多都是基于OAuth2.0
的。
首先我们需要明白这样一个概念, OAuth
,它是一个授权(Authorization)的开放标准,大家都可以基于这个标准去实现。OAuth基于HTTPS,以及APIs,Service应用使用```access_token````来进行身份验证。
它主要有OAuth 1.0
和OAuth 2.0
,二者不兼容。OAuth2.0 是目前广泛使用的版本,大部分说的OAuth
都是OAuth2.0
它的基本流程是怎么样的呢?我们先看张图
上图中所涉及到的对象分别为:
Client
第三方应用,我们的应用就是一个ClientResource Owner
资源所有者,即用户Authorization Server
授权服务器,即提供第三方登录服务的服务器,如GithubResource Server
拥有资源信息的服务器,通常和授权服务器属于同一应用根据上图的信息,我们可以知道OAuth2
的基本流程为:
(code)
(code)
向授权服务器请求授权(code)
通过后,同意授权,并返回一个资源访问的凭证(Access Token)
。(Access Token)
向资源服务器请求相关资源。(Access Token)
通过后,将第三方应用请求的资源返回。基本概念就介绍到这里,下面我们就一起整一下吧~
首先我们的准备工作,需要安装好Nacos
,如果还不会的同学可以参考我之前写的文章,这里默认大家都安装好了。本节呢,我们统一给大家尝试高版本,我这里的SpringBoot
版本是2.6+
,SpringCloud
是2021
,基本上都是比较新的版本了
下面新建一个maven
项目,父工程的pom.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <groupId>pkq-cloud</groupId>
- <artifactId>com.pkq.cloud</artifactId>
- <version>1.0-SNAPSHOT</version>
- <modules>
- <module>spring-cloud-oauth2-server</module>
- </modules>
-
- <packaging>pom</packaging>
-
- <properties>
- <fate.project.version>1.0.0</fate.project.version>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <java.version>1.8</java.version>
- <maven.plugin.version>3.8.1</maven.plugin.version>
- <spring.boot.version>2.6.3</spring.boot.version>
- <spring-cloud.version>2021.0.1</spring-cloud.version>
- <spring-cloud-alibaba.version>2021.0.1.0</spring-cloud-alibaba.version>
- <alibaba.nacos.version>1.4.2</alibaba.nacos.version>
- <alibaba.sentinel.version>1.8.3</alibaba.sentinel.version>
- <alibaba.dubbo.version>2.7.15</alibaba.dubbo.version>
- <alibaba.rocketMq.version>4.9.2</alibaba.rocketMq.version>
- <alibaba.seata.version>1.4.2</alibaba.seata.version>
- <mybatis.plus.version>3.5.1</mybatis.plus.version>
- <knife4j.version>3.0.2</knife4j.version>
- <swagger.version>3.0.0</swagger.version>
- </properties>
-
- <dependencyManagement>
- <dependencies>
- <!-- springBoot -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-dependencies</artifactId>
- <version>${spring.boot.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- <!-- springCloud -->
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-dependencies</artifactId>
- <version>${spring-cloud.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- <scope>provided</scope>
- </dependency>
- </dependencies>
-
- </project>
-
- 复制代码
大家可以直接复制过去,下面我们新建一个模块叫spring-cloud-oauth2-server
,这个模块就是OAuth2
的授权服务中心,看下它的pom.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>com.pkq.cloud</artifactId>
- <groupId>pkq-cloud</groupId>
- <version>1.0-SNAPSHOT</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>spring-cloud-oauth2-server</artifactId>
- <build>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。