千家信息网

为 Eureka 添加 Http Basic 认证

发表于:2024-11-29 作者:千家信息网编辑
千家信息网最后更新 2024年11月29日,简介在网络世界中,任何网络中的服务都是不安全的,为了使我们的 Eureka 服务更加安全,我们可以添加各种各样的认证方式,以使客户端在提供相应的证明之后才能够注册到 Eureka 中。而这次我们就添加
千家信息网最后更新 2024年11月29日为 Eureka 添加 Http Basic 认证

简介

在网络世界中,任何网络中的服务都是不安全的,为了使我们的 Eureka 服务更加安全,我们可以添加各种各样的认证方式,以使客户端在提供相应的证明之后才能够注册到 Eureka 中。而这次我们就添加一个最基本的 Http Basic 认证到 Eureka 中。 HTTP Basic 是简单的用户名密码认证,客户端在发送注册请求时,会附带用户名和密码一起发送到 Eureka Server,这种传输方式也属于不×××全的一种。

项目源码

Gitee码云

配置 Eureka Server

打开远程 git 仓库中的 eureka-server.yml 文件,添加如下配置:

---spring:  profiles: peer1  security:    user:      name: test      password: 123456      roles: USERserver:  port: 8761eureka:   instance:    hostname: peer1  client:     register-with-eureka: false    fetch-registry: false    # serviceUrl:    #   defaultZone: http://peer2:8762/eureka---

为了简化服务注册,我们这次测试只使用 peer1 这个 profile,并且把 register-with-eurekafetch-registry 设置为了 false 以关闭自身注册。然后我们在 spring 下配置了 security.user.namepassword, roles,分别用来指定可以登录的用户名,密码,和用户组。

在我们的 registry 项目中创建一个 Java 类 cn.zxuqian.configurations.WebSecurityConfig,并添加如下代码:

@Configuration@EnableWebSecuritypublic class WebSecurityConfig extends WebSecurityConfigurerAdapter {    private static Logger log = LoggerFactory.getLogger(WebSecurityConfig.class);    @Override    protected void configure(HttpSecurity http) throws Exception {        http.csrf().disable().httpBasic();    }    @Bean    public UserDetailsService userDetailsService() {        User.UserBuilder builder = User.withDefaultPasswordEncoder();        InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();        manager.createUser(builder.username("test").password("123456").roles("USER").build());        return manager;    }}

这里覆盖了 WebSecurityConfigurerAdapter 中的 configure() 方法,用来停用 CSRF 保护,因为我们的 Eureka Server 使用了 peer 做为 hostname,而稍后测试的 product-service 使用了 localhost,会被禁止访问 Eureka 资源。然后在 userDetailsService() 方法中添加了一个 test 用户用于认证。

Product-service

打开远程 git 仓库中的 product-service.yml 文件,添加如下配置:

eureka:  client:    serviceUrl:      defaultZone: http://test:123456@peer1:8761/eureka/

这里在 defaultZone 指定的 Url 中添加了 [username]:[password]@host:port/eureka/ 形式的地址,此为 curl 发送用户名和密码的方式。

测试

首先运行 Config Server,然后使用 mvn spring-boot:run -Dspring-boot.run.profiles=peer1 运行 Eureka Server,最后运行 product-service,稍等片刻就会看到 product-service 注册成功,而 Eureka Server 的 log 中会有如下字样(需设置 log level 为 debug):

2018-05-19 18:16:45.278 DEBUG 19055 --- [nio-8761-exec-9] w.c.HttpSessionSecurityContextRepository : Obtained a valid SecurityContext from SPRING_SECURITY_CONTEXT: 'org.springframework.security.core.context.SecurityContextImpl@442bd3dc: Authentication: org.springframework.security.authentication.UsernamePasswordAuthenticationToken@442bd3dc: Principal: org.springframework.security.core.userdetails.User@364492: Username: test; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_USER; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@957e: RemoteIpAddress: 127.0.0.1; SessionId: null; Granted Authorities: ROLE_USER'

欢迎访问我的博客:http://zxuqian.cn/

用户 认证 密码 用户名 配置 方式 服务 测试 运行 安全 仓库 客户 客户端 文件 方法 网络 项目 成功 世界 代码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中医药游戏软件开发项目背景 AHV文件服务器共享路径 职业软件开发哪家强 学软件开发买什么笔记本电脑 互联网大赛回车科技团队 方舟服务器管理没有水晶岛 网络安全设计宣传图 print_r存数据库 本地缓存服务器管理员 吴江区工商软件开发方法 济宁首选dns服务器地址 世界银行中国投资环境调查数据库 金起航网络技术工程 网络安全预警级别分为哪几个级别 香港八度网络技术有限公司 梦想世界角色过户服务器 天堂2血盟该怎么选服务器 软件开发培训教师任职资格 软件开发宣传方式有哪些 杭州富阳区软件开发 东昌府区网络安全和信息化中心 血液数据库可以用来干嘛 网络安全现状分析可研究内容 查询数据库是否有重复的数据 服务器定制模式 会展设计和网络技术 炫舞时代服务器名称 数据库安全研究成果 计算机网络技术是物理吗 宝山区自主可控网络技术费用
0