NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
## 一、服务注册配置 目前我们的项目中有两个微服务,我们需要将它们注册到服务注册中心。其实之前《Hello-microservice:向服务中心注册服务》章节中,我们已经讲过这部分知识。由于我们将eureka server从单节点升级为集群,所以响应的注册配置也要修改,但总体上大同小异。主要修改的内容如下: * defaultZone从单节点配置修改为集群配置,各个eureka server配置之间使用逗号分隔。 * 微服务的ip选择,如果你的服务启动主机是多网卡的,这个要配置一下spring.cloud.inetutils。下面的配置我把VirtualBox虚拟机网卡忽略掉,使用本地局域网络192.168。 ~~~ spring: application: name: aservice-sms cloud: inetutils: preferredNetworks: - 192.168 ignored-interfaces: - .*VirtualBox.* eureka: client: service-url: defaultZone: http://zimug:centerpwd@peer1:8761/eureka/eureka/,http://zimug:centerpwd@peer2:8761/eureka/eureka/,http://zimug:centerpwd@peer3:8761/eureka/eureka/ ~~~ 因为defaultZone中使用主机名称访问注册服务,所以需要配置hosts文件。在windows中该文件是C:\\windows\\System32\\drivers\\etc\\hosts,在linux中该文件是/etc/hosts。 ~~~ 192.168.161.3 peer1 192.168.161.4 peer2 192.168.161.5 peer3 ~~~ ## 二、Eureka安全认证(服务端) 在此之前,我们的微服务向服务注册中心注册都是使用的公开访问权限,在实际的生产应用中,这很危险。因为随便的一个什么人,知道这个服务注册地址,都可以写一个服务注册到上面。通常我们需要使用eureka server对注册服务进行一个Spring Security的HttpBasic安全认证,虽然这个认证很简陋,但是能起到“防君子不防小人的”作用。 在zimug-server-eureka项目的pom.xml 中添加 Spring-Security 的依赖包 ~~~ <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> ~~~ 然后在zimug-server-eureka项目的 application.yml中加上认证的配置信息(用户名和密码): ~~~ spring: security: user: name: zimug password: centerpwd ~~~ 然后在zimug-server-eureka项目增加Spring Security 配置类: ~~~ @Configuration @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { // 关闭csrf http.csrf().disable(); // 支持httpBasic认证方式 http.authorizeRequests().anyRequest().authenticated().and().httpBasic(); } } ~~~ * 重新启动注册中心,浏览器访问服务注册中心,此时浏览器会提示你输入用户名和密码,输入正确后才能继续访问 Eureka 提供的管理页面 ## 三、Eureka安全认证(客户端) 在 Eureka Server开启认证后,所有的服务(包括eureka-server本身)向服务注册中心注册的时候也要加上认证的用户名和密码信息: ~~~ defaultZone: http://zimug:centerpwd@peer1:8761/eureka/eureka/,http://zimug:centerpwd@peer2:8761/eureka/eureka/,http://zimug:centerpwd@peer3:8761/eureka/eureka/ ~~~ 不只是aservice-rbac和aservice-sms的defaultZone需要加上用户名密码,所有需要向服务注册中心注册的微服务都要加上,否则无法正确的注册,会被安全策略拦截。即:eureka-server的defaultZone配置都要修改。