搭建微服务认证中心

在搭建之前先介绍一下OAuth2协议,简单的来说,就是为了代替多个单体应用管理session不便之处的缺点,出现了OAuth以一种用来规范令牌(Token)发放的授权机制,主要包含了四种授权模式:授权码模式、简化模式、密码模式和客户端模式,此教程采用的是密码模式。

密码模式:


密码模式是用户直接将自己的用户名密码交给client,client用用户的用户名密码直接换取AccessToken(模式很简单,直接将用户敏感信息泄漏给了client,只能用于client是我们自己开发的情况下)

1、创建heal-auth模块

2、修改heal-auth模块的pom,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?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>heal-cloud</artifactId>
<groupId>com.tan</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>heal-auth</artifactId>
<description>heal-Cloud认证服务器</description>

<dependencies>
<dependency>
<groupId>com.tan</groupId>
<artifactId>heal-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>

3、修改heal-common模块的pom,添加redis依赖(认证服务器生成的Token需要存储)和eureka-client依赖(向eureka注册中心注册客户端需要此依赖),添加依赖如下:

1
2
3
4
5
6
7
8
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

4、创建包结构com.tan.auth,在下面创建启动类HealAuthApplication,添加@EnableDiscoveryClient注解,用于开启服务注册与发现功能,内容如下:

1
2
3
4
5
6
7
8
package com.tan.auth;
@EnableDiscoveryClient
@SpringBootApplication
public class HealAuthApplication {
public static void main(String[] args) {
SpringApplication.run(HealAuthApplication.class, args);
}
}

5、创建application.properties配置文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 服务端口
server.port=8081

# 服务名称
spring.application.name=Heal-Auth

# 向Eureka 服务端发送心跳的间隔时间,单位为秒,用于服务续约。这里配置为20秒,即每隔20秒向febs-register发送心跳,表明当前服务没有宕机
eureka.instance.lease-renewal-interval-in-seconds=20
# 表示将当前服务注册到Eureak服务端
eureka.client.register-with-eureka=true
# 表示从Eureka 服务端获取注册的服务信息
eureka.client.fetch-registry=true
# 新实例信息的变化到Eureka服务端的间隔时间,单位为秒
eureka.client.instance-info-replication-interval-seconds=30
# 默认值为30秒,即每30秒去Eureka服务端上获取服务并缓存,这里指定为3秒的原因是方便开发时测试,实际可以指定为默认值即可
eureka.client.registry-fetch-interval-seconds=3
# 指定Eureka服务端地址
eureka.client.serviceUrl.defaultZone=http://heal:123456@localhost:8001/register/eureka/

6、创建包结构com.tan.auth.configure,在下面创建Security的安全配置类HealSecurityConfigure,内容如下:

1
待完善