公共平台服务治理与鉴权

  • 问题
  • 解决问题
    • 鉴权
    • 注册
    • 管理
  • 总结

聊一聊最近了解的公司服务治理平台,主要是思想,理念,而不是一种技术或框架。整个平台设计,融入了OAUTH2认证,融入了微服务思想,帮助公司各系统在复杂的IT架构下,实现一种便捷统一的调用方案,同时完成调用的管理(监控、注册、鉴权等)。

问题

一种思想或理念的出现,是否有价值,我认为主要在于它实际解决了哪些问题。基于这个价值观,我们先看看,当一个公司有成百上千个系统时,会有哪些问题?
pi如:

  1. 接口访问有没有鉴权?如何鉴权?这个话题很大,归根揭底就是,要让提供方知道调用方是谁(身份),并且同意调用(授权)。
  2. 想看看系统间调用关系,得查代码或文档
  3. 某个系统异常,怎么评估影响范围?谁调了它,它调了谁?
  4. 某系统调用量如何?负载均衡之前需不需要流量控制?

解决问题

服务治理平台,目标就是把所有系统的所有接口,管理起来,对调用方进行鉴权,对提供方开放接口注册,运营来统一管理授权。最终,解决权限问题,监控系统间调用关系,实现公司级的服务治理。

鉴权


开放平台,很重要的一个点,就是对访问进行权限控制。比较老的Basic Auth认证方式,在请求中加入用户名和密码,由服务端来进行鉴权。目前较通用的OAuth认证,通过Access Token完成授权与认证,具体不在详述,目前我们使用OAUTH2。
其实,抽象来看,鉴权主要围绕两个问题,1,你是谁,2,同意不同意你调。
围绕这两个问题,我们来捋一捋怎么设计,来完成这两个事:
  1. 首先,得有个系统,让调用方注册用户,申请访问接口等,暂且命名为portal
  2. 其次,提供方可以在平台注册自己的接口
  3. 平台管理人员,一般是运营同事,得有个系统可以查看注册接口、访问申请、注册用户、发布到公共平台等等,并完成对各种访问的授权,暂且命名为admin
  4. 另,既然使用了oauth2,就得有个取token的系统,暂且命名为oauth
  5. 最后,得有个对外的统一入口吧(即公共平台),暂且名为open

整个调用鉴权流程,如下:

1344248-20180414135421175-1155357141.png


1. 调用方注册用户
2. protal返回用户id和secret
3. 管理员,审核用户(你是谁?)
4. 用户id通过审核
5. 通过审核的用户id申请相关访问资源
6. 管理员,授权资源访问(同不同意你调?)
7. 资源申请通过
8. 根据用户id和secret到oauth取token
9. 到公共平台(open)访问你申请的资源,需要带上token
10. open对token进行鉴权

注册

提供方系统注册接口到公共平台,有很多种方式,目前,我们主要使用两种方式:

  1. 系统内置平台注册SDK,在代码中实现接口注册
  2. 系统调用平台开放注册接口,通过HTTP请求完成注册。这种方式,提供方本身又成了公共平台的调用方,需要走一遍上面的鉴权过程=。=

整个注册流程比较简单,如下:

1344248-20180414135432341-567661999.png

管理

基于以上分析,有个提供方并在平台注册了接口,有了调用方并在平台获得了授权,那么整个管理平台的基本职能就可以推断出来:

  1. 服务注册、维护
  2. 消费维护、授权
  3. 应用申请授权、接口发布
  4. 系统运行态数据监控

总结

以上,仅仅是一个梗概,认识一个东西,我喜欢先看轮廓,在扣细节。
扣个细节,比如,授权单位如果是个接口的话,我们公司将近2w个openAPI接口,授权起来比较琐碎,此时可以用分组来进行管理。如某个小系统的所有接口放到一个组里面,调用方通过申请组资源的访问,来完成对组内接口的访问。
在比如,授权时可以设置用户token的时效,过期token失效,需要重新取token。时效设置多久合适,大家可以另行分析。我们系统是金融领域=。=

以上,感谢观看,点个赞,我觉得不过分。

转载于:https://www.cnblogs.com/lknny/p/8831667.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/250525.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

koa --- 扩展hbs方法

moment 是一款常用的处理时间的库传入 1999-03-01T16:00:00.000Z YYYY/MM/DD输出 1999/03/02 const moment require(moment);const myDatePattern (date, pattern) >{return moment(date).format(pattern) } 给扩展hbs功能. 放在 utils/helper.js 下方便管理 const hb…

go系列 锁的初识

Go基础之锁的初识 当我们的程序就一个线程的时候是不需要用到锁的,但是通常我们实际的代码不会是单个线程的,所有这个时候就需要用到锁了,那么关于锁的使用场景主要涉及到哪些呢? 当我们多个线程在读相同的数据的时候则是需要加锁…

node --- 实现session认证.

跨域认证的问题 互联网服务离不开用户认证.一般流程如下: 1、用户向服务器发送用户名和密码。 2、服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等。 3、服务器向用户返回一个 session_id&…

回信,我的好朋友王一涵

好了,不拖了,沏一杯咖啡,把信写完。因为再拿好吃的贿赂你,贿赂不起了—— 一个胖子可以吃穷我的。 王一涵凹,不得了不得了。微胖肉质女生,关于体重我就不提了,只有我知道嘿嘿嘿,在我…

koa --- seesion实现登录鉴权

koa vue session 实现一个简单的登录逻辑 /login component/login-session.html <!DOCTYPE html><head><script src"https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><script src"https://unpkg.com/axios/dist/axios.…

flume快速入门及应用

 Flume 简介 Flume 的安装与配置 Fumne 部署   Flume 是 Cloudera 提供的一个高可用、 高可靠、 分布式的海量日志采集、 聚合和传输的系统。 Flume 支持定制各类数据源如 Avro、 Thrift、 Spooling 等。 同时 Flume提供对数据的简单处理&#xff0c; 并将数据处理结果…

koa --- jwt实现最简单的Token认证

HTML 有如下html: 先看代码后挑重点来说明: <!DOCTYPE html><head><script src"https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><script src"https://unpkg.com/axios/dist/axios.min.js"></script></…

koa --- 使用Github OAuth登录

准备 登录github选择右上角的setting Developer settings -> OAuth Apps -> Register a new application 填入基本信息 点击绿色的按钮,可以看见 client_id 和 client secret 理清思路: 开始时,一个登录的连接,点击连接.后台监听登录(/login)路由,然后重定向到github…

软工五:四则运算

题目要求 本次作业要求两个人合作完成&#xff0c;驾驶员和导航员角色自定&#xff0c;鼓励大家在工作期间角色随时互换&#xff0c;这里会布置两个题目&#xff0c;请各组成员根据自己的爱好任选一题。 题目一&#xff1a; 我们在刚开始上课的时候介绍过一个小学四则运算自动生…

Tomcat 配置Https

https://www.cnblogs.com/wanghaoyuhappy/p/5267702.html JDK1.8 keytool 生存证书 C:\keys\tomcat.keystore 1:证书生成 命令如下: keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 1024 -keystore C:/keys/tomcat.keytore -storepass 123456 keytool 使…

koa --- 使用koa-multer和element-ui组件上传头像

文件上传 前端代码 <script src"https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script src"https://unpkg.com/element-ui/lib/index.js"></script> <linkrel"stylesheet"href"https://unpkg.co…

koa --- nunjucks在Koa中的使用、中间件的配置

Nunjucks在Koa中的应用 app.js const koa require(koa); const app new koa(); const router require(./router) const nunjucks require(koa-nunjuncks-2); app.use(nunjucks({ext: html, // 指定视图文件默认后缀path: path.join(__dirname, views), // 指定视图目录…

2018福大软工实践第六次作业

目录 NABCD分析引用N(Need&#xff0c;需求)&#xff1a;A(Approach&#xff0c;做法)&#xff1a;B(Benefit&#xff0c;好处)&#xff1a;C(Competitors&#xff0c;竞争)&#xff1a;D(Delivery&#xff0c;交付)&#xff1a;初期中期个人贡献分评定原则评定细则本组现场答辩…

day32—CSS多列布局学习

转行学开发&#xff0c;代码100天——2018-04-17 关于多列布局&#xff0c;前期已经梳理过&#xff0c;今天的培训课程学习中再次提及&#xff0c;趁此也做个总结和检验。 多列布局的介绍参考&#xff1a; day08—css布局解决方案之多列布局关于多列布局的类型和方法&#xff1…

JDBC 事物处理

JDBC 事物处理 •事务&#xff1a;指构成单个逻辑工作单元的操作集合 •事务处理&#xff1a;保证所有事务都作为一个工作单元来执行&#xff0c;即使出现了故障&#xff0c;都不能改变这种执行方式。当在一个事务中执行多个操作时&#xff0c;要么所有的事务都被提交(commit…

centos6上安装mysql8.0版本

本博客是采用yum源的方式安装&#xff0c;非常的方便和快捷。(redhat 与centos7 等操作系统都可以采用此方法&#xff0c;步骤大体一致) mysql官网地址: https://dev.mysql.com 开始安装&#xff1a; 1.清理环境&#xff0c;查看有没有之前安装过的mysql记录&#xff0c;清理…

koa --- 使用koa-multer上传文件+elementUI

核心代码 const upload require(koa-multer) ({dest: ./public/images}); router.post(/upload, upload.single(file), ctx>{console.log(file, ctx.req.file);console.log(body, ctx.req.body);ctx.body 上传成功; })目录结构如下 基本思路 1.通过浏览器访问url: http:…

第二篇 python基础知识总结:数据、运算符

引子 我们跟任何人交流&#xff0c;说的每一句都是都一些文字组成&#xff0c;包含名词、动词、语句、标点符号等&#xff0c;组成我们说普通话构成的基本要素。同理我们学习python语言也要明白这些基本要素&#xff0c;也就是我们常说的基本语法&#xff0c;这是我们必须掌握的…

koa --- 使用Sequelize连接mysql

Sequelize介绍 为了快捷开发,社区出现了一系列的ORM(Object Relational Mapping)类库ORM的字面意思为对象关系映射,它提供了概念性的、易于理解的模型化数据的方法。通过ORM,可以降低操作数据库的成本。开发者不需要通过编写SQL脚本来操作数据库,直接通过访问对象的方式来查询…

Android gravity和layout_gravity的区别

一、gravity和layout_gravity相同处 两者都是设置对齐方式的属性。内部的属性值相同。 根据英文意思也能理解其中的意思。如center_horizontal表示在水平方向上的位置为中间。 二、gravity和layout_gravity的不同处 gravity是设置自身内部元素的对齐方式。比如一个TextView&…