falcon适配ldap密码同步
问题
小米的openfalcon在使用ldap首次登陆成功后,会在本地创建同名的账号, 这就有个问题当你更新了ldap的密码时,openfalcon是没有同步本地账号密码的功能
二次改造
方便我们debug, 先把日志的debug打开,默认是没有运行时日志的,只有console日志
# 编辑文件 dashboard/rrd/utils/logger.pyimportsysfrom rrdimportconfigimportloggingfile_handler = logging.FileHandler(filename='/data1/dev/open-falcon/dashboard/var/running.log')formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')file_handler.setFormatter(formatter)logging.getLogger().addHandler(file_handler)logging.getLogger().setLevel(logging.DEBUG)添加两个util方法 dashboard/rrd/view/utils.py
def get_Apitoken(name, password):d = {"name": name,"password": password}h = {"Content-type":"application/json"}r = requests.post("%s/user/login"%(config.API_ADDR,), \data=json.dumps(d), headers=h)ifr.status_code !=200:raise Exception("%s %s"%(r.status_code, r.text))sig = json.loads(r.text)["sig"]returnjson.dumps({"name":name,"sig":sig})def get_user_id(name, Apitoken):h = {"Content-type":"application/json","Apitoken":Apitoken}r = requests.get("%s/user/name/%s"%(config.API_ADDR,name), headers=h)ifr.status_code !=200:user_id = -1returnuser_iduser_id = json.loads(r.text)["id"]returnuser_id重构登陆函数
diff --git a/rrd/view/auth/auth.py b/rrd/view/auth/auth.pyindex c203c4c..a546b95100644--- a/rrd/view/auth/auth.py+++ b/rrd/view/auth/auth.py@@ -17,6+17,7@@from flaskimportrequest, g, abort, render_template, redirectfrom flask.ext.babelimportrefreshimportrequests+importtracebackimportjsonfrom rrdimportappfrom rrdimportconfig@@ -48,6+49,7@@ def auth_login():ifldap =="1":try:ldap_info = view_utils.ldap_login_user(name, password)+ log.debug("ldap_info: %s"%ldap_info)h = {"Content-type":"application/json"}d = {@@ -58,12+60,20@@ def auth_login():"phone": ldap_info['phone'],}- r = requests.post("%s/user/create"%(config.API_ADDR,), \+ Apitoken = view_utils.get_Apitoken('admin','admin_password')+ user_id = view_utils.get_user_id(name, Apitoken)+ log.debug('apitoken:%s, user_id:%s'%(Apitoken, user_id))++ifuser_id >0:+ r = requests.put("%s/admin/change_user_passwd"%(config.API_ADDR), data=json.dumps({"user_id":user_id,"passwor+ log.debug('ldap login success and synchronize user password')+else:+ r = requests.post("%s/user/create"%(config.API_ADDR,), \data=json.dumps(d), headers=h)- log.debug("%s:%s"%(r.status_code, r.text))+ log.debug("create user status %s:%s"%(r.status_code, r.text))- #TODO: update password in dbifldap password changedexcept Exception as e:+ log.debug(traceback.format_exc())ret["msg"] = str(e)returnjson.dumps(ret)完
falcon适配ldap密码同步的更多相关文章
- 记一次LDAP主从同步配置
LDAP主从同步 OpenLDAP在2.3版本之前的同步复制带有一系列缺点如只支持一主多从模式等,在此缺点就不多说,下文着重介绍一下OpenLDAP V2.4以后的同步负复制功能 同步功能 2.4版最 ...
- Azure Active Directory Connect密码同步问题
这几天一直在弄O365与本地域账号的密码同步问题.由于微软即将用Azure Active Directory Connect(以下简称AADC)这个同步工具替代之前的DirSync,所以我也研究了下这 ...
- 如何将多个 Apple 设备中保存在 iCloud 里面密码同步
如何将多个 Apple 设备中保存在 iCloud 里面密码同步 iCloud 钥匙串 密码同步 数据迁移 iOS iCloud 钥匙串会记住一些信息,因此您就无需记忆这些信息. 它会在您批准的任何设 ...
- 通过PowerShell启用AADC的密码同步功能
在AADC工具里面也可以启用. 下面这个是世纪互联工程师提供的Powershell脚本(我测试了下是可以的),其中,$adConnector和$aadConnector可以在AADC工具里面找到. $ ...
- 19 Go的全能ORM简单入门
gorm 昨天我的ldap账户改了以后,openfalcon(v2.1)-dashboard竟然无法登陆了!显然,没有把我的密码同步到本地数据库里面,怎么办?只能改openfalcon用户认证的源码了 ...
- 实验记录贴 —— 账号同步实验 RTX 和 LDAP(AD域)
目前,公司有多个系统,RTX,邮箱(MD),OA,NC. 这些系统之间,如果要实现单点登录的话,账户肯定需要同步,或者某一种映射机制. 如果所有数据都和中央账号数据库(LDAP,这里是AD域)看齐,那 ...
- [原创]django+ldap实现统一认证部分一(django-auth-ldap实践)
前言 接之前我的文章,django+ldap+memcache实现单点登录+统一认证 ,ldap部署相关,ldap双机\LAM配置管理\ldap备份还原,目前来说,我们已经有了高可用性的ldap环境了 ...
- 07: Django 使用ldap登录、注销等
目录:Django其他篇 01:Django基础篇 02:Django进阶篇 03:Django数据库操作--->Model 04: Form 验证用户数据 & 生成html 05:Mo ...
- lsyncd 实时同步
1. 几大实时同步工具比较 1.1 inotify + rsync 最近一直在寻求生产服务服务器上的同步替代方案,原先使用的是inotify + rsync,但随着文件数量的增大到100W+,目录下的 ...
随机推荐
- ManageEngine的EventLog Analyzer许可信息
- 2018.11.07 codeforces559C. Gerald and Giant Chess(dp+组合数学)
传送门 令f[i]f[i]f[i]表示对于第iii个棋子,从(1,1)(1,1)(1,1)出发到它不经过其它棋子的方案数. 于是我们假设(h,w)(h,w)(h,w)有一个棋子,求出它的fff值就可以 ...
- oracle远程连接
1.1.1 修改文件: 1.1.2 修改net Manager(可省略) 1.1.3 修改任何都需要重启oracle监听和启动服务
- (18)What a planet needs to sustain life
https://www.ted.com/talks/dave_brain_what_a_planet_needs_to_sustain_life/transcript 00:12I'm really ...
- C++STL 容器比较
Vector的使用场景:比如软件历史操作记录的存储,我们经常要查看历史记录,比如上一次的记录,上上次的记录,但却不会去删除记录,因为记录是事实的描述. deque的使用场景:比如排队购票系统,对排队者 ...
- tp5 excel导出类
1.引入Loader use think\Loader; 2.导出方法: /** * excel表格导出 * @param string $fileName 文件名称 * @param array $ ...
- 阿里ETL工具datax学习(一)
阿里云开源离线同步工具DataX3.0介绍 一. DataX3.0概览 DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL.Oracle等).HDFS.Hive.Ma ...
- python基于pillow库的简单图像处理
from PIL import Image from PIL import ImageFilter from PIL import ImageEnhance import matplotlib.pyp ...
- (最长公共子序列 暴力) Common Subsequence (poj 1458)
http://poj.org/problem?id=1458 Description A subsequence of a given sequence is the given sequence w ...
- 【python-pip】pip安装国外插件timeout解决方案
为什么会timeout呢,你懂得(不懂???!!!) 解决方案: 使用国内豆瓣镜像安装(也有其他的镜像,自己可以搜) pip install xxx -i http://pypi.douban.com ...