社区编辑申请
注册/登录
初步认识微服务中的资源服务器
服务器 服务器产品
资源服务器到底是什么以及怎么用很少有教程来专门聊这个东西,今天我们先来聊一聊这个概念,为后续的使用打一打基础。

资源服务器到底是什么以及怎么用很少有教程来专门聊这个东西,今天我们先来聊一聊这个概念,为后续的使用打一打基础。

传统安全方式的不足

在Spring Security干货系列教程中,我们一步步来学习了Spring Security的使用。其中大部分涉及到的都是传统的保护应用的方式。我们通过用户名和密码(也可以是验证码)来获得服务器给的凭证(JWT是其中的一种),然后携带凭证去请求接口以获得对应的资源(Resource)。绝大部分的单体应用使用这种模式非常方便和简单。

但是一旦你所在的项目做大了,需要改造成微服务了,使用这种方式就显得有些笨重了,每个服务的资源都需要认证授权,所以需要一种范式来简化这一流程。

认证和授权是可以松耦合的

用户的认证和资源的访问控制其实是可以分开的。就比如你买飞机票,现在你不仅可以在航空公司的售票部门买到票,也可以到第三方票务中心线下或者线上去买票,最终每个架次的航班会对你的票据进行核验以确定你是否符合登记的条件,而且不会关心你的购票渠道。这是实际生活中的一个例子。

如果在微服务中,我们每一个服务只需要校验请求是否具有符合访问资源的权限即可,我们可以把资源访问校验的逻辑抽象一个公用的模型,并用代码来实现,非常符合微服务去中心化的思想。这就是资源服务器的根本意义。

资源服务器

资源服务器的全称是 OAuth2 Resource Server ,它实际上是OAuth 2.0 协议的一部分,通常我们借助于Json Web Token来实现(其实还有一种叫Opaque Tokens也可以使用)。OAuth2.0授权服务器发给客户端Json Web Token,这个Token是用来验证客户端是否有权限访问某个资源的。

当单体应用改造成微服务时,授权服务其实还是中心化比较好,统一管理用户的认证授权并发放给客户端Token。每个具体的服务同时也是一个资源服务器,我们只需要抽象好访问控制的接口就可以了。这里遵循一个原则:共性封装成类库(jar),个性化抽象为配置。 大致的流程图如下:

微服务认证授权流程

这样授权服务器只管发Token功能,资源服务器只负责验证Token,每当有新的服务接入我们只需要加入配套的资源服务依赖和配置即可,改造起来非常简单。

网上还有一种资源服务器也中心化的方式,也就是在网关处进行集中认证处理。个人认为除非你有过类似经验,否则并不容易接受,而且还要处理一些安全上下文跨服务的问题。对于初学者来说强烈建议使用以上的模型。

 

其实我已经对上面的模型进行了初步实现和改造,我会在下一篇再讲解如何在微服务中利用Spring Security实现资源服务器,以及单体应用改造微服务中相关方面的一些要点。

本文转载自微信公众号「码农小胖哥」,可以通过以下二维码关注。转载本文请联系码农小胖哥公众号。

 

责任编辑:武晓燕 来源: 码农小胖哥
相关推荐

2022-04-23 16:58:24

微服务微服务架构

2022-04-28 09:36:51

微服务性能云原生

2022-04-20 07:48:09

微服务链路服务器

2022-03-31 08:15:38

微服务服务拆分架构

2022-04-11 07:34:46

OAuth2UAA节点

2022-04-09 14:45:02

2022-04-19 14:41:29

Oracle数据库SQL

2022-04-26 05:36:42

2022-04-14 10:10:59

Nginx开源Linux

2022-04-19 08:15:53

DDD领域建模实战

2022-03-09 08:22:43

项目开发分布式微服务

2022-04-19 16:16:35

DevOps云原生容器

2022-04-14 17:53:50

携程AWS上云

2022-04-06 13:55:22

DockerLinux

2022-04-14 08:21:48

微服务项目多模块

2022-05-10 16:04:40

编程语言PythonC语言

2022-04-20 20:28:40

HDF 驱动框架鸿蒙操作系统

2022-04-29 08:22:22

数据中心绿色低碳

2022-03-30 13:56:05

前端监控搭建

2022-05-07 15:31:19

物联网5G智慧城市

同话题下的热门内容

OAuth2授权服务器Id Server一键生成配置原理用 Python 远程控制 Windows 服务器,太好用了!

编辑推荐

微服务的4个设计原则和19个解决方案微服务API级权限的技术架构高性能计算知识: 深度解析Lustre体系结构微服务架构中模块划分和服务识别Spring Cloud微服务实践
我收藏的内容
点赞
收藏

51CTO技术栈公众号