1. 回顾

  上一篇博客讲解了Eureka集群及将微服务注册到集群上。在前面的讲解中,Eureka Server都是允许匿名访问的,本次将讲解如何构建一个需要登录才能访问的Eureka Server。

2. 为Eureka Server添加用户认证

  > 复制项目 microservice-discovery-eureka,将ArtifactId修改为 microservice-discovery-eureka-authenticating。

  > 在pom.xml中添加spring-boot-starter-seurity的依赖,该依赖为Eureka Server提供用户认证的能力。

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>

  > 在application.yml中添加认证配置。如何不进行配置,则默认用户名是 user ,默认密码是一个随机值,会在项目启动时打印出来。

spring:
security:
user:
name: root # 用户名
password: 123456 # 密码

  > 启动项目,访问 http://localhost:8761/ 即可看见身份验证的对话框,输出设置的用户名和密码即可进入。

  > 将微服务中的 eureka.client.service-url.defaultZone 改为 http://root:123456@localhost:8761/eureka/ 即可注册到需认证的Eureka Server中。但是我测试一直没有成功,跟踪日志发现是因为csrf的问题,微服务的请求中不包含csrf参数,因此被CsrfFilter拦截。版本Edgware.SR2测试成功,但是该版本中的配置有所不同,该版本的配置为:

security:
basic:
enabled: true
user:
name: root
password: 123456

--------------------------------------------------------------------------- 补充开始 --------------------------------------------------------------------------------------------------------

   > 上面已经说过,因为Eureka Server默认开启了CsrfFilter,导致微服务不能注册成功。因此只需要关闭Eureka Server的CsrfFilter即可

  > 在Eureka Server中添加如下配置类即可关闭Csrf校验

package com.itmuch.cloud.microservicediscoveryeurekaauthenticating;

import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @EnableWebSecurity
public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter { @Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
super.configure(http);
}
}

  > 重新启动 microservice-discovery-eureka-authenticating

  > 修改 microservice-provider-user 的 application.yml中 的 defaultZone为 http://user:password123@localhost:8761/eureka,然后启动

  > 注册成功

--------------------------------------------------------------------------- 补充结束 --------------------------------------------------------------------------------------------------------

 

 

3. Eureka的元数据

  > Eureka的元数据有两种,分别为标准元数据和自定义元数据。

    标准元数据:主机名、IP地址、端口号、状态页和健康检查等信息,这些信息都会被发布在服务注册表中,用于服务之间的调用。

    自定义元数据:自定义元数据可以使用eureka.instance.metadata-map配置,这些元数据可以在远程客户端中访问,但是一般不会改变客户端的行为,除非客户端知道该元数据的含义。

  > 复制项目 microservice-provider-user,将ArtifactId修改为 microservice-provider-user-metadata

  > 修改application.yml,使用eureka.instance.instance.metadata-map属性为该微服务添加自定义的元数据。

eureka:
metadata-map:
my-metadata: 我自定义的元数据

  > 复制项目 microservice-consumer-movie,将ArtifactId修改为 microservice-consumer-movie-metadata

  > 修改 MovieController,添加方法showInfo(),展示微服务 microservice-provider-user-metadata 的元数据信息

/**
* 查询microservice-provider-user服务的信息并返回
*
* @return
*/
@GetMapping("/user-instance")
public List<ServiceInstance> showInfo() {
return this.discoveryClient.getInstances("microservice-provider-user");
}

  > 启动 microservice-discovery-eureka(必须第一个启动)

  > 启动 microservice-provider-user-metadata

  > 启动 microservice-consumer-movie-metadata

  > 访问 http://localhost:8010/user-instance/,返回类似如下的内容。

  > 将内容复制到 http://json.cn 中,看的更清晰明了。

4. 总结

  这篇是很尴尬的一篇,搞了半天也没能将微服务注册到该版本的Eureka Server中,后续如果解决了会进行更新。

  后续将讲解Eureka剩余的知识:自我保护模式、健康检查、多网卡环境下的IP选择等。敬请期待~~~

5. 参考

  周立 --- 《Spring Cloud与Docker微服务架构与实战》

最新文章

  1. Json.Net 数据解析
  2. 关于firstChild,firstElementChild和children
  3. LCD底层驱动分析
  4. IntentService
  5. textarea 在浏览器中固定大小和禁止拖动
  6. ReactiveCocoa中信号的使用
  7. Java Swing的进化
  8. printf的格式输出
  9. oracle 内存结构 share pool sql解析的过程
  10. POJ 2524 (简单并查集) Ubiquitous Religions
  11. BootStrap入门教程 (二) :BASE CSS(排版(Typography),表格(Table),表单(Forms),按钮(Buttons))
  12. 遍历字典时用与不用iter的区别
  13. xcode5 ios7升级后的一系列问题解决
  14. C++简介
  15. juce viewport使用
  16. 新浪微博 2.4sdk 一闪而过
  17. [LeetCode] Delete and Earn 删除与赚取
  18. Android开发学习之路--性能优化之常用工具
  19. JQ初级
  20. BZOJ4910 : [Sdoi2017] 苹果树

热门文章

  1. 【转】Talend作业设计模式和最佳实践-Part I
  2. AC日记——[国家集训队2011]旅游(宋方睿) cogs 1867
  3. 洛谷——P2862 [USACO06JAN]把牛Corral the Cows
  4. (寒假集训)Mooo Moo (完全背包)
  5. 【hdu1150】【Machine Schedule】二分图最小点覆盖+简单感性证明
  6. 【spring data jpa】spring data jpa的in查询
  7. eclipse进行Debug的时候,发出“java breakpoint unable to install breakpoint”错误
  8. 几个有关Hadoop自带的性能测试工具的应用
  9. 【MySQL】谈谈PhxSQL的设计和实现哲学
  10. asp.net原理笔记----页面控件类型,页面状况和asp.net编译过程