郑昀 基于朱传志的设计文档 最后更新于2014/11/13

关键词:LDAP、认证、权限分配、IdCenter、

本文档适用人员:研发
 
曾经一个IT内部系统配一套帐号体系和授权
  线上生产环境里,技术人员需要登录许多内部系统,如:
  • memcached/redis/mongodb 的管控系统
    • 譬如我得有个把线上某个 memcached 的某个业务端口下某个/某些键值清空的 Web 界面吧;
    • 譬如我得有个查出某个缓存键值并选择用哪一个Java Class反序列化的功能吧;
  • jobcenter/notifyserver/推荐评测 的控制台
  • dubbo 的服务治理控制台
  • 持久化配置中心  的控制台
  • CobarManager 控制台
  • ……
  每个IT系统都是不同人开发的,如果每个人都设计自己的用户体系和RBAC权限体系,第一重复制造轮子浪费体力,第二大家需要记住无数系统入口和帐号密码,第三每当有离职时还得记得逐一禁用账户。
 
  所以在 JobCenter/NotifyServer/Diamond/Dubbo 等陆续上线后,孟珂和传志于2013年又开始运作起内部统一认证系统。
 
IdCenter 要干什么?
  目标是建立一个内部各个管理系统能统一使用的用户认证和权限管理中心,以提高各个内部系统的安全性,并统一和简化内部系统的权限开发工作。具体包括:
  1. 进行内部管理系统的统一用户认证和各种权限管理;
  2. 兼容现有的各个内部管理系统;
  3. 记录部分系统访问日志。
  用户来自于哪里?是 IdCenter 自己创建出来的?不。是运维在 UNIX/Linux 环境下通过 OpenLDAP 配好 LDAP 服务,IdCenter 根据 LDAP 协议同步用户过来。这样有几个好处:
  • 开启用户、禁用/删除用户只需要在一个集中的地方做;
  • 不仅仅研发的内部管理系统可以用,运维 DevOps 的内部管理系统也可以用这套用户体系;
  • 不需要重复制造轮子。
  注意不是自动同步,而是手动同步,如下图所示:
图0 同步LDAP数据
 
 系统分为两部分:
  • 认证中心:
    • 用户登录和密码修改
    • 控制界面,可以对用户和权限进行设置
    • 接收过滤客户端的权限验证请求,并作出判断
  • 过滤客户端(filter):
    • 安装在各个内部管理系统中
    • 过滤用户的访问请求
    • 向认证中心发起用户和权限认证请求
    • 根据认证中心回复阻拦或放行用户访问请求
  业务流大致如下:
图1 授权方式
  由于内部系统可能是 Java/PHP/dotNET/Python 等开发语言,所以要求权限检查接口具有跨语言跨平台性,于是朱传志的权限检验接口统一提供为 HTTP+Json 格式调用。
  为了保证校验效率,IdCenter 使用内存缓存以提高权限验证时间,它缓存下面两项内容:
  • 用户->组List
  • URL->组List
  它使用常用驻留和设置过期方式,校验会在两个组List之间进行比对 。
 
 
IdCenter 怎么控制权限?
  由于不愿意在权限控制时涉及各个管理系统的业务逻辑,所以朱传志约定权限是针对 URL(或者说是 URI) 的,如下图2所示,首先我们会录入要管辖的管理系统的 URL。
图2 录入各种URL
  然后我们要设定用户组,如下图3所示:
图3 设置分组
  点击“设置URL”按钮,我们为这个分组设定它都可以对哪些 URL 有权限访问:
图4 为分组设置URL
  还可以为分组设置该用户组都包含哪些用户:
 
图5 为分组设置用户
 
IdCenter 的记录访问日志功能
  我们终于可以在一个集中的地方看到内部各个管理系统的登录日志了,嘿呀:
图6 登录日志
  我们还可以按用户来查看他于什么时间使用了哪些权限(也就是访问了哪些登记在册的 URL):
 
图7 权限日志
  好了,最后我们看一下完整的 IdCenter 首页吧:

图8 首页
 
  这就是 IdCenter,一个为了不重复制造轮子而制造出来的解决方案。
 
-over-
 
欢迎订阅我的微信订阅号『老兵笔记』,请扫描二维码关注:

#研发解决方案介绍#IdCenter(内部统一认证系统)的更多相关文章

  1. #研发解决方案介绍#Tracing(鹰眼)

    郑昀 最后更新于2014/11/12 关键词:GoogleDapper.分布式跟踪.鹰眼.Tracing.HBase.HDFS. 本文档适用人员:研发   分布式系统为什么需要 Tracing?   ...

  2. #研发解决方案介绍#基于StatsD+Graphite的智能监控解决方案

    郑昀 基于李丹和刘奎的文档 创建于2014/12/5 关键词:监控.dashboard.PHP.graphite.statsd.whisper.carbon.grafana.influxdb.Pyth ...

  3. #研发解决方案介绍#基于ES的搜索+筛选+排序解决方案

    郑昀 基于胡耀华和王超的设计文档 最后更新于2014/12/3 关键词:ElasticSearch.Lucene.solr.搜索.facet.高可用.可伸缩.mongodb.SearchHub.商品中 ...

  4. #研发解决方案介绍#Recsys-Evaluate(推荐评测)

    郑昀 基于刘金鑫文档 最后更新于2014/12/1 关键词:recsys.推荐评测.Evaluation of Recommender System.piwik.flume.kafka.storm.r ...

  5. 云方案,依托H3C彩虹云存储架构,结合UIA统一认证系统,实现了用户数据的集中存储和管理

    客户的声音 资料云项目在迷你云基础上二次开发,通过使用云存储技术及文件秒传技术,对文件进行统一存储与管理,以达到节约文件管理成本.存储成本目的:通过有效的文件版本控制机制,以达到风险管控的目的:通过多 ...

  6. 金瓯无缺江河一统|Win10系统基于Docker和Python3搭建并维护统一认证系统OpenLdap

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_180 OpenLdap(Lightweight Directory Access Protocol)是什么?它其实是一个开源的.具 ...

  7. Laravel5中集成Jasig cas统一认证系统

    CAS : CAS(Central Authentication Service)是一款不错的针对 Web 应用的单点登录框架,这里介绍下我刚在laravel5上搭建成功的cas.提前准备工作:可运行 ...

  8. CAS统一认证系统学习

    Yale CAS(耶鲁集中认证服务)简介 http://www.5iops.com/html/2012/sso_0713/181.html 单点登陆框架CAS的研究 http://www.cnblog ...

  9. #研发中间件介绍#异步消息可靠推送Notify

    郑昀 基于朱传志的设计文档 最后更新于2014/11/11 关键词:异步消息.订阅者集群.可伸缩.Push模式.Pull模式 本文档适用人员:研发   电商系统为什么需要 NotifyServer? ...

随机推荐

  1. WebStorm文件类型关联设置

    无意中创造了一个没有扩展名的文件,我选择了错误的文件类型关联.是js类型的,我却选成了文本,Ws每次编辑类型就成了txt文本,这个问题让我很苦恼,以下是我的解决方案. 错选的弹出框如下: 解决方案如下 ...

  2. C# 在excel表格中检索并导出数据

    由于工作需要,我经常使用excel文档来存储和处理各种数据,在生活中偶尔也会使用excel表格来记录各种开销,相信很多朋友也和我一样.Excel的功能很强大,其中一个很实用的数据处理功能就是查找和替换 ...

  3. IOS 开发中要注意的事项

    1.关于拍摄 TGCameraViewController – 基于 AVFoundation 的自定义相机.样式漂亮,轻量并且可以很容易地集成到 iOS 项目中.不会内存吃紧 2.block 中对控 ...

  4. 行程编码(atoi函数)

    #include<iostream> #include<string> #include<vector> using namespace std; void jie ...

  5. dsoframer 使用笔记

    dsoframer是微软提供一款开源的用于在线编辑.调用Word.Excel.PowerPoint等的ActiveX控件. 1.层覆盖 如果需要在文档编辑区域上方覆盖一个div的话,z-index无效 ...

  6. 常见ArcGIS操作(以10.0为例)

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.建立缓冲区 先在图层属性表里面新建一个缓冲区半径字段,然后对该字段赋 ...

  7. Linux中mongodb安装和导出为json

    采用官方工具导出mongo数据为json格式 文档:https://docs.mongodb.com/manual/reference/program/mongoexport/ 可以远程导出,只要有h ...

  8. css学习--css基础

    学习慕课网笔记,课程:http://www.imooc.com/code/2024 1.css选择器 子选择器:parent>child 子选择器是指选择parent的范围内的第一个子元素.这里 ...

  9. jQuery-1.9.1源码分析系列(二)jQuery选择器

    1.选择器结构 jQuery的选择器根据源码可以分为几块 init: function( selector, context, rootjQuery ) { ... // HANDLE: $(&quo ...

  10. JS正则表达式总结

    关于JS的正则用法,已经有很多文章了,大同小异 正则表达式30分钟入门教程 MDN正则表达式 玩转JavaScript正则表达式 ES6正则的扩展