falcon适配ldap密码同步
问题
小米的openfalcon在使用ldap首次登陆成功后,会在本地创建同名的账号, 这就有个问题当你更新了ldap的密码时,openfalcon是没有同步本地账号密码的功能
二次改造
方便我们debug, 先把日志的debug打开,默认是没有运行时日志的,只有console日志
# 编辑文件 dashboard/rrd/utils/logger.py
import
sys
from rrd
import
config
import
logging
file_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)
if
r.status_code !=
200
:
raise Exception(
"%s %s"
%(r.status_code, r.text))
sig = json.loads(r.text)[
"sig"
]
return
json.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)
if
r.status_code !=
200
:
user_id = -
1
return
user_id
user_id = json.loads(r.text)[
"id"
]
return
user_id
重构登陆函数
diff --git a/rrd/view/auth/auth.py b/rrd/view/auth/auth.py
index c203c4c..a546b95
100644
--- a/rrd/view/auth/auth.py
+++ b/rrd/view/auth/auth.py
@@ -
17
,
6
+
17
,
7
@@
from flask
import
request, g, abort, render_template, redirect
from flask.ext.babel
import
refresh
import
requests
+
import
traceback
import
json
from rrd
import
app
from rrd
import
config
@@ -
48
,
6
+
49
,
7
@@ def auth_login():
if
ldap ==
"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))
+
+
if
user_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 db
if
ldap password changed
except Exception as e:
+ log.debug(traceback.format_exc())
ret[
"msg"
] = str(e)
return
json.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+,目录下的 ...
随机推荐
- apm飞行模式
参考 :https://www.cnblogs.com/jins-note/p/9580054.html 复制别人的,因为很久(几年)玩一次,所以会忘,也不好找,,若作者要求,请给留言,会立即删除 ...
- TOMCAT内存溢出及大小调整的实现方法
一.tomcat内存设置问题 收藏 在使用Java程序从数据库中查询大量的数据或是应用服务器(如tomcat.jboss,weblogic)加载jar包时会出现java.lang.OutOfMemor ...
- 2019.01.01 bzoj3625:小朋友和二叉树(生成函数+多项式求逆+多项式开方)
传送门 codeforces传送门codeforces传送门codeforces传送门 生成函数好题. 卡场差评至今未过 题意简述:nnn个点的二叉树,每个点的权值KaTeX parse error: ...
- SQL MAP 注入测试
SQL MAP是一款测试系统是否有SQL漏洞的工具 下载地址: http://sqlmap.org/ sqlmap 是一款使用python编写的工具,所以需要安装python,需要安装python 为 ...
- 端口报错listen eaddrinuse:::xxx
端口报错 listen eaddrinuse:::xxx 表示这个端口被占用 结束正在使用此端的程序即可.
- python 基础_ 数组的 增删改查3
数组是运用在多个数据存在一个变量中的,而在调用的时候可以调用所需要的数组. 创建数组 a = ['a','b','c','d','f'] #创建一个数组a其中有5个元素分别是abcdf 1.查询.所谓 ...
- 分区表主键不包含分区键报错ERROR 1105 (HY000)
ERROR 1105 (HY000): A PRIMARY KEY must include all columns in the table's partitioning function MySQ ...
- ==和equals的比较
一 : == 的特点: a == b ; 1.如果A和B是基本数据类型 == 比较的是两个变量的值 2.如果A和B是引用数据类型 == 比较的是两个变量的内存地址 二:重写的equal ...
- HDFS块文件和存放目录的关系
详情请参见DatanodeUtil.java中的函数idToBlockDir(File root, long blockId). 如果block文件没有放在正确的目录下,则DataNode会出现&qu ...
- winSockets编程(五)非阻塞模式(远程算数程序)
##