15.26. 微服务安全解决方案

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:
security-microservices.png

15.26.1. Restful 安全问提

Restful 的通信安全有很多中解决方案,例如

  1. HTTP Basic Auth 认证

  2. Cooke / Session 认证

  3. Token 认证

  4. Oauth / OpenID

等等,每一种方案都很成熟,这里不依依解释,如果不了解,请去搜索引擎查找相关资料。这里我谈谈在实施微服务项目中的心得,首先项目采用 Spring cloud 方案,Spring cloud 有自己的RestController 控制器,我们需要遵循他的规范开发,这就限制了很多传统的认证加密方法不能应用到 Spring cloud中。

例如传统restful 使用 POST 方式提交,POST 数据格式如下:

		
name=Neo&age=23&md5=xxxxxxx
		  
		

然后做 token 校验。

而 Spring cloud 使用 raw 格式的数据做POST提交,例如

@RequestMapping(value = "/member/create", method = RequestMethod.POST)  
public void create(@RequestBody Member member)
		

我们不想在Spring框架上做额外的改动,又想解决信息的安全问题。

15.26.2. 第一个阶段采用 HTTP Basic Auth

这个方案简单,实施起来最为方便,因为项目比较紧急,所以就采用了这个方案,这个方案既可以在运维方处理,也可以在开发方处理,对于 Spring boot 只需引入Spring Security 简单配置,立即生效。

实现方式请参考:Spring boot with Spring security

15.26.3. 第二阶段 HTTP Basic Auth + SSL

上面的方案适合在防火墙内部的服务器间通信,如果跨机房或者在广域网上就不在安全了,通过嗅探器抓包,包括 http basic auth 的用户和密码,以及接口数据没有安全可言。 为Web 服务器增加 SSL 证书,可以解决信息安全问提。

证书可以使用CA机构颁发的证书,也可以自己生成证书。

证书可以配置在Web服务器上如Nginx, 实现方式请参考:http://www.netkiller.cn/www/nginx/conf.html#http2《Netkiller Web 手札》

也可以配置在 Spring boot 中, 实现方式请参考:Spring boot with HTTPS SSL

这个方案可以满足绝大部分用户的需求。

15.26.4. 第三阶段 Oauth

由于需要为手机端提供 restful 服务,之前的方式已经不能满足我们的需求,之前的方式更适合提供私有服务,不适合提供公共服务。所谓私有服务是指它的使用范围限制在企业内部,或者事业部间共享服务,总的来说可以通过防火墙控制服务区域。

对于公共服务 OpenID/Oauth 更适合,我们不关心用户地理位,终端设备的情况。实现方式请参考:Spring boot with Oauth2

15.26.5. 第三阶段,终极版诞生,SSL使用双向认证

  1. SSL 双向认证

  2. HTTP Basic Auth 认证

  3. Oauth2 认证

这是我们最终的方案,双向认证是服务器与客户端两端都需要证书才能通信。

		
App(IOS/Android) -->  SSL 双向认证 --> SLB/Proxy --> Feign Client 		
		
	





原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

目录
相关文章
|
21天前
|
安全 Java API
第7章 Spring Security 的 REST API 与微服务安全(2024 最新版)(上)
第7章 Spring Security 的 REST API 与微服务安全(2024 最新版)
65 0
第7章 Spring Security 的 REST API 与微服务安全(2024 最新版)(上)
|
11月前
|
消息中间件 弹性计算 数据可视化
SpringBoot 整合 Elastic Stack 最新版本(7.14.1)分布式日志解决方案,开源微服务全栈项目【有来商城】的日志落地实践
SpringBoot 整合 Elastic Stack 最新版本(7.14.1)分布式日志解决方案,开源微服务全栈项目【有来商城】的日志落地实践
|
12天前
|
监控 持续交付 数据库
构建高性能微服务架构:挑战与解决方案
【5月更文挑战第24天】 在数字化转型的浪潮中,企业纷纷采用微服务架构以提升系统的灵活性和可扩展性。然而,随着服务的不断增多,如何保证系统性能和稳定性成为了一个严峻的挑战。本文将深入探讨在构建高性能微服务架构过程中所面临的主要问题,并提出针对性的解决方案。通过实践案例分析、技术选型对比以及性能优化策略,旨在为开发者提供一条清晰的指导思路,确保微服务系统在高并发环境下的高效运行。
|
21天前
|
API 持续交付 开发者
构建高性能微服务架构:挑战与解决方案
【4月更文挑战第29天】 随着现代软件开发的复杂性日益增加,微服务架构成为众多企业和开发者的首选。它通过将大型应用程序拆分为一系列小型、自治的服务来提供灵活性和可扩展性。然而,随之而来的是一系列的挑战,包括服务间通信、数据一致性、安全性和性能优化等。本文将深入探讨在构建高性能微服务架构过程中可能遇到的挑战,并提供针对性的解决方案,以帮助开发者克服这些难题,实现更加健壮和高效的系统。
|
21天前
|
Dubbo Java 应用服务中间件
Spring Cloud Dubbo: 微服务通信的高效解决方案
【4月更文挑战第28天】在微服务架构的发展中,服务间的高效通信至关重要。Spring Cloud Dubbo 提供了一种基于 RPC 的通信方式,使得服务间的调用就像本地方法调用一样简单。本篇博客将探讨 Spring Cloud Dubbo 的核心概念,并通过具体实例展示其在项目中的实战应用。
25 2
|
21天前
|
监控 安全 数据管理
现代化后端开发:微服务架构下的数据管理与安全挑战
随着信息技术的不断发展,现代化后端开发正日益注重微服务架构下的数据管理与安全挑战。本文将探讨微服务架构在后端开发中的应用,重点关注数据管理和安全方面的挑战,并提供相应的解决方案。
|
9月前
|
安全 Java 开发者
深入了解Spring Cloud Security:构建安全的分布式微服务
随着微服务架构的流行,安全性成为了构建分布式系统的关键问题之一。Spring Cloud Security是Spring家族中的一个强大工具,它提供了一系列功能,帮助开发者轻松地保护其微服务应用程序。本文将深入探讨Spring Cloud Security的各个方面,从基本概念到实际应用,帮助您构建安全的分布式微服务。
|
21天前
|
数据库 开发者 微服务
浅谈微服务架构中的数据一致性解决方案
在分布式系统的演进过程中,微服务架构因其高度的解耦和独立性成为了众多企业技术栈的首选。然而,微服务架构中的数据一致性管理却是一个棘手的问题,直接关系到系统的稳定性和可靠性。本文将探讨在微服务架构下,如何通过不同的策略和技术手段,有效地解决数据一致性问题。我们将介绍基于事件驱动的一致性模式、分布式事务处理机制以及最终一致性的概念,并分析它们各自的应用场景和优缺点,为开发者提供在设计和实现微服务架构时的参考和指导。
102 0
|
21天前
|
传感器 监控 安全
微服务智慧工地信息化解决方案(源码)
智慧工地是指应用智能技术和互联网手段对施工现场进行管理和监控的一种工地管理模式。它利用传感器、监控摄像头、人工智能、大数据等技术,实现对施工现场的实时监测、数据分析和智能决策,以提高工地的安全性、效率和质量。
56 0
|
21天前
|
消息中间件 Kubernetes 监控
一个简化版的微服务解决方案
一个简化版的微服务解决方案