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+,目录下的 ...
随机推荐
- C# WebService创建、发布、调用的简单例子
Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布式的互操作的应用程序. Web ...
- AJAX-DOM事件
1.DOM事件 1.select的onchange事件 当选项框中的内容发生改变时需要出发的事件.2.Ajax 1.名词解释 1.同步 在一个任务进行中,不能开启其它的任务. 同步访问:浏览器在向服务 ...
- 求一个数的n次幂
1.当这个数是2的多少次幂: 求(2^m)^n = 2^(m*n) = 1<<m*n; 2.快速幂(要考虑底数a,和m的正负) int quick_mod(int a,int m){ ...
- 2019.01.21 bzoj3674: 可持久化并查集加强版(主席树+并查集)
传送门 题意:维护可持久化并查集,支持在某个版本连边,回到某个版本,在某个版本 询问连通性. 思路: 我们用主席树维护并查集fafafa数组,由于要查询历史版本,因此不能够用路径压缩. 可以考虑另外一 ...
- 2018.12.31 NOIP训练 czy的后宫5(树形dp)
传送门 题意:给一棵有根树,树有点权,最多选出mmm个点,如果要选一个点必须先选其祖先,问选出来的点权和最大值是多少. 直接背包转移就行了. 代码
- CString int转换
1.CString 转 int CString strtemp = "100"; int intResult; intResult= atoi(strtem ...
- SVN previous operation has not finished
svn提交遇到恶心的问题,可能是因为上次cleanup中断后,进入死循环了. 错误如下: 解决方法:清空svn的队列 1.下载sqlite3.exe 2.找到你项目的.svn文件,查看是否存在wc.d ...
- oracle学习笔记一:用户管理(2)创建删除用户
本文主要介绍如何创建和删除用户,当然里面牵涉很多知识,慢慢道来. 1,创建用户 需求:假设你是oracle管理员,当一个同事入职,你需要分配给一个账号. 创建用户,一般需要有相应权限的用户才可以创建用 ...
- Python 错误和异常小结[转]
原文链接 http://blog.csdn.net/sinchb/article/details/8392827 事先说明哦,这不是一篇关于Python异常的全面介绍的文章,这只是在学习Pyth ...
- mui框架如何实现页面间传值
mui框架如何实现页面间传值 我的传值 listDetail = '<li class="mui-table-view-cell mui-media>">< ...