文档章节

#研发解决方案介绍#IdCenter(内部统一认证系统)

郭恩洲_OSC博客
 郭恩洲_OSC博客
发布于 2015/02/26 10:17
字数 1300
阅读 156
收藏 4
关键词: 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-

本文转载自:http://www.cnblogs.com/zhengyun_ustc/p/55solution9.html

郭恩洲_OSC博客
粉丝 37
博文 257
码字总数 125971
作品 0
徐汇
高级程序员
私信 提问
#研发中间件介绍#定时任务调度与管理JobCenter

关键词:定时任务、调度、监控报警、Job、crontab、Java 本文档适用人员:研发员工 没有JobCenter时我们要面对的: 电商业务链条很长,业务逻辑也较为复杂,需要成百上千种定时任务。窝窝的大...

郭恩洲_OSC博客
2015/02/26
168
0
#研发中间件介绍#定时任务调度与管理JobCenter

郑昀 最后更新于2014/11/11 关键词: 定时任务 、调度、监控报警、Job、crontab、Java 本文档适用人员:研发员工 没有JobCenter时我们要面对的: 电商业务链条很长,业务逻辑也较为复杂,需要...

旁观者-郑昀
2015/01/04
868
1
如何从零开始搭建一个技术平台

郑昀 创建于2016/3/30 最后更新于2016/4/8 关键词:技术预研课题,平台设计,应用场景,故事,信息架构,业务流程,数据流程 本文档适用人员:全体研发 提纲: 如何从零开始搭建一个技术平台...

旁观者-郑昀
2016/04/26
137
0
#研发解决方案介绍#基于持久化配置中心的业务降级

郑昀 最后更新于2014/4/18 关键词:业务降级,配置中心,基本可用性, A.业务降级的背景知识: 淘宝就双十一课题曾经讲过: 『 所谓业务降级,就是牺牲非核心的业务功能,保证核心功能的稳定...

旁观者-郑昀
2015/01/27
170
0
#研发解决方案介绍#Recsys-Evaluate(推荐评测)

关键词:recsys、推荐评测、Evaluation of Recommender System、piwik、flume、kafka、storm、redis、mysql 本文档适用人员:研发 推荐系统可不仅仅是围着推荐算法打转 先明确一下,我们属于...

郭恩洲_OSC博客
2015/02/26
164
1

没有更多内容

加载失败,请刷新页面

加载更多

Go 每日一库之 viper

简介 上一篇文章介绍 cobra 的时候提到了 viper,今天我们就来介绍一下这个库。 viper 是一个配置解决方案,拥有丰富的特性: 支持 JSON/TOML/YAML/HCL/envfile/Java properties 等多种格式的...

darjunlee
32分钟前
44
0
Raspberry Pi 树莓派 搭建java8环境

更新软件源 apt-get upgradeapt-get update 移除自带的openjdk(如果有的话) apt-get remove openjdk* 安装oracle jdk,地址: https://www.oracle.com/technetwork/java/javase/downl......

ChangeZ
今天
139
0
树莓派3b 安装openwrt

https://downloads.openwrt.org/releases/19.07.0/targets/brcm2708/bcm2710/openwrt-19.07.0-brcm2708-bcm2710-rpi-3-squashfs-factory.img.gz 插入并启动树莓派3B+,顺便接上键盘和显示器,......

FalconChen
今天
191
0
OSChina 周一乱弹 —— 有些运动也常用到膝盖

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《火宵の月・テーマ~ピアノソロ》- 中村由利子 手机党少年们想听歌,请使劲儿戳(...

小小编辑
今天
2.5K
11
Redis持久化机制

RDB存储 RDB方式的持久化是通过快照完成的,当符合一定条件时Redis会自动将内存中的所有数据生成一份副本并存储在硬盘上。 Redis会在一下集中情况下对数据进行快照: 根据配置规则进行快照;...

XuePeng77
今天
219
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部