搭建微服务认证中心
在搭建之前先介绍一下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,内容如下: