- 内容提要
- 译者序
- 前言
- 第 1 章 欢迎迈入云世界,Spring
- 第 2 章 使用 Spring Boot 构建微服务
- 第 3 章 使用 Spring Cloud 配置服务器控制配置
- 第 4 章 服务发现
- 第 5 章 使用 Spring Cloud 和 Netflix Hystrix 的客户端弹性模式
- 第 6 章 使用 Spring Cloud 和 Zuul 进行服务路由
- 第 7 章 保护微服务
- 第 8 章 使用 Spring Cloud Stream 的事件驱动架构
- 第 9 章 使用 Spring Cloud Sleuth 和 Zipkin 进行分布式跟踪
- 第 10 章 部署微服务
- 附录 A 在桌面运行云服务
- 附录 B OAuth2 授权类型
第 7 章 保护微服务
本章主要内容
- 了解安全在微服务环境中的重要性
- 认识 OAuth2 标准
- 建立和配置基于 Spring 的 OAuth2 服务
- 使用 OAuth2 执行用户验证和授权
- 使用 OAuth2 保护 Spring 微服务
- 在服务之间传播 OAuth2 访问令牌
提到“安全”这个词往往会引起开发人员不由自主地痛苦沉吟。你会听到他们咕哝着低声诅咒:“它迟钝,难以理解,甚至是很难调试。”然而,没有任何开发人员(除了那些没有经验的开发人员)会说他们不担心安全问题。
一个安全的应用程序涉及多层保护,包括:
- 确保有正确的用户控制,以便可以确认用户是他们所说的人,并且他们有权执行正在尝试执行的操作;
- 保持运行服务的基础设施是打过补丁且最新的,以让漏洞的风险最低;
- 实现网络访问控制,让少量已授权的服务器能够访问服务,并使服务只能通过定义良好的端口进行访问。
本章只讨论上述列表中的第一个要点:如何验证调用微服务的用户是他们所说的人,并确定他们是否被授权执行他们从微服务中请求的操作。另外两个主题是非常宽泛的安全主题,超出了本书的范围。
要实现验证和授权控制,我们将使用 Spring Cloud Security 和 OAuth2(Open Authentication)标准来保护基于 Spring 的服务。OAuth2 是一个基于令牌的安全框架,允许用户使用第三方验证服务进行验证。如果用户成功进行了验证,则会出示一个令牌,该令牌必须与每个请求一起发送。然后,验证服务可以对令牌进行确认。OAuth2 背后的主要目标是,在调用多个服务来完成用户请求时,用户不需要在处理请求的时候为每个服务都提供自己的凭据信息就能完成验证。Spring Boot 和 Spring Cloud 都提供了开箱即用的 OAuth2 服务实现,使 OAuth2 安全能够非常容易地集成到服务中。
注意
本章将介绍如何使用 OAuth2 保护微服务。不过,一个成熟的 OAuth2 实现还需要一个前端 Web 应用程序来输入用户凭据。本章不会讨论如何建立前端应用程序,因为这已经超出了本书关于微服务的范围。作为代替,本章将使用 REST 客户端(如 POSTMAN)来模拟凭据的提交。有关如何配置前端应用程序,我建议读者查看以下 Spring 教程:https://spring.io/blog/2015/02/03/sso- with-oauth2-angular-js-and-spring-security-part-v。
OAuth2 背后真正的强大之处在于,它允许应用程序开发人员轻松地与第三方云服务提供商集成,并使用这些服务进行用户验证和授权,而无须不断地将用户的凭据传递给第三方服务。像 Facebook、GitHub 和 Salesforce 这样的云服务提供商都支持将 OAuth2 作为标准。
在讨论使用 OAuth2 保护服务的技术细节之前,让我们先看看 OAuth2 架构。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论