sso 自动化运维平台
单点登录SSO(Single Sign-On)是身份管理中的一部分。本文中作者开发了一个自动化运维平台中的统一认证接口,单点登录平台通过提供统一的认证平台,实现单点登录。因此,应用系统并不需要开发用户认证程序。
AD:
前言:
在工作中,大大小小开发了不少自动化运维平台,能更好的提高效率以及人工的失误。有朋友问我,登录平台的账号密码如何的管理。当听到这个问题的时候,我说直接入库呀,但是说完后,觉得相当的不妥,最少和我现在解决方案也不一样。
以前做运维开发项目的时候,每个app都是一套用户密码,顶多做了一个加密流转,申请接入的时候,需要领导的邮件审批,后期改成ldap在openldap做认证了。 但是现在不这么搞了。
原因呢? 我相信大家公司肯定都有认证的接口,先说下常见的认证接口有那两种(我就见过这两种,希望朋友补充):
- 公司的各个平台通过ldap连入windows ad目录,或者是连入特定的db。 当时这样很不安全,如果我是开发者的话,用户输入用户名和密码的时候,点击登录,我完全可以把账号密码给print出来。
- Passport方案,这个算是统一认证,一般是oauth,但是oauth相对麻烦点。大家有时候,要登录论坛的时候,他会提示可以用qq,支付宝,人人的账号登录。 我现在的方案就是类似这种的方法,好! 下面说下,我对这个统一认证的接口使用。
我自己也写过一个 统一认证平台接口,是基于cookie方式的,实现的方法相对简单,但是很有效,安全方面让安全部门测试过,在一定条件下,还是很安全的。在以前公司开发的多个平台也都接入了这个统一认证。
语言:python 框架:tornado 模块:requests,flask-admin,oauth2 组件:redis,mysql 前端:Bootstrap |
对于python oauth2的方案,可以看 https://github.com/simplegeo/python-oauth2
- 得到授权码code
- 获取access token
- 通过access token,获取OpenID
- 通过access token及OpenID调用API,获取用户授权信息
这里的方案不是oauth2,因为oauth2更多的是给大批的第三方应用设计的,咱们这里只是做passport认证,用oauth2显得不是太合适。
集群平台clusterops clusterops.xiaorui.cc,中心认证passport.xiaorui.cc为例:
- 判断用户是否登录,已经在passport登录的话,可以直接访问clusterops,如果没有登录的话,会转跳到 passprot.xiaorui.cc/redirect?urlto=clusterops.xiaorui.cc
- 当转跳到 passprot.xiaorui.cc/redirect?urlto=clusterops.xiaorui.cc的时候,会提示用你的域账户和密码登录,登录成功后,会再次转跳到 clusterops.xiaorui.cc/api?res=aqggzwnasdzo9kzwsxedclmcksduwe8sdf0d&Token=F3fQk1eTJWu2XbWHEzuXXJ0KoJeH6O
- clusterops接收api接口的res和Token字段数据,用这两个字段以cookie的方式去访问passport.xiaorui.cc/getuserdata?accesstime=时间戳
- 统一认证端passport拿到了cookie在redis里面做对比,然后判断access时间,在5分钟之内,符合要求给他return 用户数据,如果不符合,就给他回一个错误数据。
- clusterops解析了返回的json数据,把username及一些数据,放到session里面,这样用户就完成了认证及登录。
看这个流程图比较直观点,一般来说我们只是对于web应用做认证接入,认证后,在这个web应用的所有动作权限,都是在web应用本身做的。如果每个应用和连接都再次向认证系统去验证cookie、session,那就会有瓶颈,所以用saml使两个认证服务器做认证通信 !
上面说的只是统一认证方面的,下面再来说说单点登录。
单点登录SSO(Single Sign-On)是身份管理中的一部分。SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护资源时,不再需要重新登录验证。
开源的sso,也有不少,我用过lemonldap这个websso方案,感觉还不错。
SSO的好处:
方便用户:从用户实际使用角度考虑
用户使用应用系统时,能够一次登录,多次使用。用户不再需要每次输入用户名称和用户密码,也不需要牢记多套用户名称和用户密码。
方便管理员:从日常维护管理角度考虑
系统管理员只需要维护一套统一的用户账号,方便、简单。相比之下,系统管理员以前需要管理很多套的用户账号。每一个应用系统就有一套用户账号,不仅给管理上带来不方便,而且,也容易出现管理漏洞,开发者也不知道用户的账号密码
简化应用系统开发:从应用扩展角度考虑
开发新的应用系统时,可以直接使用单点登录平台的用户认证服务,简化开发流程。单点登录平台通过提供统一的认证平台,实现单点登录。因此,应用系统并不需要开发用户认证程序。
单点登录在这里就很好体现了,只要用户登录了passport统一认证,登录后平台会session标记,只要别的项目指向PassPort认证,那自然而然他们都可以登录了。
另外,我们一定要再开发一套针对统一认证passport的权限控制,不然每个应用都自己控制admin和guest的权限,这样会显得很乱。 这段时间我也配置一套权限管理接口,可以配套在统一认证接口上,权限控制的很细,一个页面,一个菜单,一个动作都可以控制。
欧了,这里是我自己对于运维平台的统计认证,sso单点登录,权限管理的理解。 我相信,我的这篇文章更加适合新手理解,当然肯定也有理解出问题的地方,请大神指正 !
sso 自动化运维平台的更多相关文章
- #研发解决方案#iDB-数据库自动化运维平台
郑昀 创建于2015/12/2 最后更新于2015/12/2 关键词:数据库,MySQL,自动化运维,AutoDDL,刷库,帐号授权,审核,回滚 提纲: 数据库自动化运维什么?别人家是怎么玩的? 我们 ...
- 【I·M·U_Ops】------Ⅱ------ IMU自动化运维平台之CMDB
说明本脚本仅作为学习使用,请勿用于任何商业用途.本文为原创,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. #A 我理解的 CMDB CMDB翻译过来,Configuratio ...
- (转)实验文档5:企业级kubernetes容器云自动化运维平台
部署对象式存储minio 运维主机HDSS7-200.host.com上: 准备docker镜像 镜像下载地址 复制 12345678910111213141516 [root@hdss7-200 ~ ...
- 【IMU_Ops】------III------ IMU自动化运维平台之CMDB(admin)
说明本文中所有内容仅作为学习使用,请勿用于任何商业用途.本文为原创,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. #A 首先启用admin 通过python manage.p ...
- saltstack---自动化运维平台
https://github.com/ixrjog/adminset[自动化运维平台:CMDB.CD.DevOps.资产管理.任务编排.持续交付.系统监控.运维管理.配置管理 ] https://ww ...
- Python自动化运维:技术与最佳实践 PDF高清完整版|网盘下载内附地址提取码|
内容简介: <Python自动化运维:技术与最佳实践>一书在中国运维领域将有“划时代”的重要意义:一方面,这是国内第一本从纵.深和实践角度探讨Python在运维领域应用的著作:一方面本书的 ...
- Python自动化运维 技术与最佳实践PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书
点击获取提取码:7bl4 一.内容简介 <python自动化运维:技术与最佳实践>一书在中国运维领域将有"划时代"的重要意义:一方面,这是国内第一本从纵.深和实践角度探 ...
- 基于Linux平台的自动化运维Devops-----之自动化系统部署
一.自动化运维的背景网站业务上线,需要运维人员在短时间内完成几百台服务器部署,包括系统安装.系统初始化.软件的安装与配置.性能的监控......所谓运维自动化,即在最少的人工干预下,利用脚本与第三方工 ...
- SQL Server 自动化运维系列
本系列为SQL SERVER自动化运维的一些操作技巧点,所有内容都是根据日常运维过程中最经常遇到的问题,并为此形成了一些自动化运维的方式,皆为原创.... 供部分DBA和开发人员浏览借鉴,所应用平台基 ...
随机推荐
- 安装lszrz,用于上传文件
wget http://down1.chinaunix.net/distfiles/lrzsz-0.12.20.tar.gztar zxvf lrzsz-0.12.20.tar.gzcd lrzsz- ...
- NOIP 2013 day2
tags: 模拟 贪心 搜索 动态规划 categories: 信息学竞赛 总结 积木大赛 花匠 华容道 积木大赛 Solution 发现如果一段先单调上升然后在单调下降, 那么这一块的代价是最高的减 ...
- tomcat - gc日志输出
原创 2017年01月04日 14:32:37 2090 tomcat/bin catalina.sh JAVA_OPTS='-server -Xms4g -Xmx4g -Xss256k -XX:Pe ...
- 通过kubeadm安装kubernetes 1.7文档记录[docker容器方式]
参照了网上N多文档,不一一列表,共享精神永存!!!! ================================================== 获取所有安装包 安装包分为两类,rpm安装包 ...
- WebMail
try { WebMail.SmtpServer = "smtp.example.com"; WebMail.SmtpPort = ; WebMail.Enab ...
- nutch 抓取需要登录的网页
题记:一步一坑,且行且珍惜 最近接到任务,要利用nutch去抓取公司内部系统的文章,可是需要登录才能抓到.对于一个做.net,不熟悉java,不知道hadoop,很少接触linux的我,这个过程真是艰 ...
- CSS 规范
不能写得一手好字是一个遗憾.不能写得一手好看的代码更是一种遗憾.——致青春 1. 为选择器分组时,将单独的选择器单独放在一行. 2. 为了代码的易读性,在每个声明块的左花括号前添加一个空格. 3. 声 ...
- sublime text3 自己定义的不同浏览器的预览快捷键
sublime text3 自己定义的不同浏览器的预览快捷键突然全部失效了,搞到现在一直没闹清楚怎么回事,翻看插件发现SideBarEnhancements这插件刚更新了,快捷键也是依赖这个插件弄得. ...
- thinkphp的where方法的使用
1.Thinkphp中where()条件的使用 总是有人觉得,thinkphp的where()就是写我要进行增加.查询.修改.删除数据的条件,很简单的,其实我想告诉你,where()是写条件语句的,但 ...
- 51使用while进行延时的问题
上周写了一个简单的IO口翻转的程序,但是很奇怪,在FPGA板子上怎么也跑不起来. 后面发现问题可能出在延时函数上. void Delay(unsigned char t) { while(--t); ...