大家好,我是DJ李淳罡,微服务是现在面试中必不可少的一项技能了,掌握微服务,不仅能够加薪升职,还能在面试中,底气十足,不怯场,不怕被压薪资。所以今天就特意开了一个微服务专栏,给大家从0-1的介绍微服务知识,由浅入深,逐渐掌握,感兴趣的可以订阅收藏,防止下次找不到了哦~
在上篇中,我们实现了Eureka Server 服务端,这篇就实现Eureka Client,完成微服务的注册。
使用IDEA的Spring Initializr
创建Spring项目,选择依赖时勾选Eureka Discovery Client
,然后点击Next
按钮,如图所示。
勾选Eureka Discovery Client
后会生成spring-cloud-starter-netflix- eureka-server
依赖。还需在pom.xml
配置文件中添加以下依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifact
</dependency>
修改application.yml
配置文件,添加以下内容:
server:
port: 6789
eureka:
client:
service-url:
defaultZone:http://localhost:8761/eureka/
先启动Eureka Server
,再启动Eureka Client
。启动Eureka Client
时检查后台日志。
如果日志中出现下面信息,则说明注册成功:
Registering application UNKNOWN with eureka with status UP
此时检查8761
端口,显示效果如图所示。
可以看到已经注册成功,但是名称为UNKNOWN
。
可以修改spring.application.name
这个值,我们修改application.yml
如 下:
server:
port: 6789
application:
name: first-eureka-client
eureka:
client:
service-url:
defaultZone:http://localhost:8761/eureka/
修改名称以后再重新启动后,查看服务注册中心,如图所示。
好了,到此已经 可以开发向Eureka Server
注册的Client了。
这是一个完整的eureka的页面:
Spring Security
为JavaEE企业级开发提供了全面的安全防护。Spring Security
采用“安全层”的概念,使每一层都尽可能安全,连续的安全层可以实现全面的防护。它可以在Controller
层、Service
层、DAO
层以加 注解的方式来保护应用程序的安全。
Spring Security提供了细粒度的权限控制,可以精细到每一个API接口、每一个业务的方法,或每一个操作数据库的DAO层的方法。
使用Spring Security的一个重要原因是它对环境的无依赖性、低代码耦合性。Spring Security提供了数十个安全模块,模块与模块之间的耦合性低,模块之间可以自由组合,以实现特定需求的安全功能。
在安全方面,有两个主要的领域,一是“认证”,即用户是谁;二 是“授权”,即用户拥有什么权限,Spring Security的主要目标就是在这两 个领域。JavaEE还有一个优秀的安全框架Apache Shiro,Apache Shiro在 企业级的项目开发中十分受欢迎,一般使用在单体服务中。但在微服务架构中,目前版本的Apache Shiro是无能为力的。另一个选择Spring Security的原因是Spring Security容易应用于Spring Boot工程,也容易于 集成到采用Spring Cloud构建的微服务系统中。
在Eureka Server上添加Spring Security的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
Spring Boot 2.x以后,使用Spring Security需要添加spring-boot-starter-security
,在application.yml文件中新增以下配置:
spring:
security:
user:
name: jack
password:1234
即添加Spring Security的用户名和密码。
CSRF(Cross Site Request Forgery)的中文是跨站点请求伪造的意思。CSRF攻击者在用户已经登录目标网站之后,诱使用户访问一个攻击页面,利用目标网站对用户的信任,以用户身份在攻击页面中对目标网站发起伪造用户操作的请求,从而达到攻击的目的。
所以需要禁用CSRF,做法如下: 首先开发一个类,继承WebSecurityConfigurerAdapter
。然后在代码中禁用CSRF:
@Configuration
public class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {
public SecurityPermitAllConfig(){
System.out.printf(">>>>>>>:初始化成功;");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
super.configure(http);
http.csrf().disable();
}
}
上例中一共3个步骤:
WebSecurityConfigurerAdapter
。EnableWebSecurity
注解。http.csrf().disabled()。
启动Eureka Server并访问8761端口:首先进入登录页面,如图所示。
因为加了安全验证,所以我们需要在curl中添加用户名和密码,现在修改Eureka Client中的
application.yml配置文件,添加用户名和密码:
server:
port: 6789
application:
name: first-eureka-client
eureka:
client:
service-url:
defaultZone:http://jack:1234@localhost:8761/eureka/
注意上面代码中defaultZone
的用户名和密码的添加位置。
然后启动客户端注册,如图所示即为注册成功:
至此,我们已经可以在Spring Boot 2和Spring Cloud中使用基本的安全功能了。
从第一篇微服务入门简介,介绍了微服务架构的知识点和概念,再到Sprint Cloud基础,介绍了SpringCloud中用到的组件,让大家在脑海里先对微服务有一个印象,再到微服务注册中心Eureka Server 服务的实现,以及最后的微服务的注册 Eureka Client的实现,循序渐进,不贪多,打基础才能走的更远。