文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Spring Cloud怎么保证微服务内安全

2023-06-20 16:12

关注

这篇文章主要为大家展示了“Spring Cloud怎么保证微服务内安全”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Spring Cloud怎么保证微服务内安全”这篇文章吧。

一、简介

在微服务的架构下,我们需要把系统的业务划分成多个单一的微服务。每个微服务都会提供接口供其他微服务调用,在Dubbo中可以通过rmi、nio等实现,Spring Cloud中是通过http调用的。

但有些时候,我们只希望用户通过我们的网关调用微服务,不允许用户直接请求微服务。这时我们就可以借助Spring Security来保障安全。

二、使用步骤

2.1 在提供接口的微服务项目中配置Spring Security

1 首先在pom.xml引入Spring Security的相关配置,如下

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

2 在qpplication.yml中配置账号密码,如下

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

3 此时访问接口发现已经需要认证了。

Spring Cloud怎么保证微服务内安全

输入正确的账号和密码后就可以访问了。

2.2在调用微服务项目中配置Feign的账号密码

1 在application.yml中配置账号密码

security:  user:    name: sunbufu    password: 123456

2 添加Feign的配置文件

package com.sunbufu.config;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import feign.auth.BasicAuthRequestInterceptor;@Configurationpublic class FeignConfiguration {    @Value("${security.user.name}")    private String userName;    @Value("${security.user.password}")    private String passWord;    @Bean    public BasicAuthRequestInterceptor basicAuthRequestInterceptor(){        return new BasicAuthRequestInterceptor(userName, passWord);    }}

3 这样完成后,就可以正常的访问了。

Spring Cloud怎么保证微服务内安全

三、实例

Spring Cloud怎么保证微服务内安全

git源码地址:https://github.com/sunbufu/sunbufu-cloud

下面是这4个工程的说明:

sunbufu-erueka:Eureka服务的工程

sunbufu-hello-face:服务接口的定义工程,其中包括定义微服务需要实现什么功能,其他微服务怎么调用,以及feign的配置

sunbufu-hello-impl:服务接口的实现工程,实现了sunbufu-hello-face定义的功能

sunbufu-hello-web:服务的网关工程,主要为了调用sunbufu-hello-face

Spring Cloud服务安全连接

Spring Cloud可以增加HTTP Basic认证来增加服务连接的安全性。

1、加入security启动器

在maven配置文件中加入Spring Boot的security启动器。

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

这样,就开启对服务连接的安全保护,系统默认为生成一个用户名为”user”及一个随机密码,随机密码在服务启动的时候在日志中会打印出来。

2、自定义用户名密码

随机密码没什么实际意义,我们需要一个固定的连接用户名和密码。

在应用配置文件中加入以下配置即可。

security:   user:     name: admin    password: admin123456

这样配置完后在连接这个服务的时候就会要求输入用户名和密码,如果认证失败会返回401错误。

{    "timestamp": 1502689874556,    "status": 401,    "error": "Unauthorized",    "message": "Bad credentials",    "path": "/test/save"}

3、安全连接

注册中心安全连接

username:password@ipaddress

Feign申明式服务安全连接

@FeignClient(name = "SERVICE", configuration = FeignAuthConfig.class)public interface OrderService extends OrderAPI {}
@Configurationpublic class FeignAuthConfig {    @Bean    public BasicAuthRequestInterceptor basicAuthRequestInterceptor() {        return new BasicAuthRequestInterceptor("admin","admin123456");    }}

以上是“Spring Cloud怎么保证微服务内安全”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯