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+,目录下的 ...
随机推荐
- PHP字符串位置相关的函数
strpos函数 描述:将返回一个字符串在另一个字符串第一次出现的位置 语法:int strpos(string haystack, mixed needle [,int offset]); 相反地 ...
- Django高级篇一RESTful架构及API设计
一.什么是RESTful架构? 通过互联网通信,建立在分布式体系上"客户端/服务器模式”的互联网软件,具有高并发和高延时的特点. 简单的来说,就是用开发软件的模式开发网站.网站开发,完全可以 ...
- 用sql 生成2016年全年的日期
select to_char(日期,'yyyy-mm-dd') from( select to_date('2016-01-01','yyyy-mm-dd') + level 日期 from dual ...
- 8个开发必备的PHP功能--转(柒捌玖零)
做过PHP开发的程序员应该清楚,PHP中有很多内置的功能,掌握了它们,可以帮助你在做PHP开发时更加得心应手,本文将分享8个开发必备的PHP功能,个个都非常实用,希望各位PHP开发者能够掌握. 1.传 ...
- 程序员面试50题—sizeof的用法(6)
以下为Windows下的32 位C++程序,请计算sizeof 的值void Func ( char str[100] ){sizeof( str ) = ?}void *p = malloc( 10 ...
- IntellJ IDEA 对于 Spring Boot2.0.2 配置文件application.properties 配置
1.指定文件名称: 打开IDEA编辑位置: 找到如图位置: 点开后方设置 设置输入如下内容:(默认的配置文件名字可以使用--spring.config.name来指定,只需要指定文件的名字,文件扩展名 ...
- oss上传大文件
最近公司做工程项目,实现文件云存储上传. 网上找了一天,发现网上很多代码都存在相似问题,最后终于找到了一个满足我需求的项目. 工程如下: 这里对项目的文件传输功能做出分析,怎么实现文件上传的,如何进行 ...
- php实现网站四则运算。
1.设计思路: 在index.php中建立两个表单,有两个提交,一个跳转到fourArithmeticOperation.php,这里保存用户输入的参数到config.txt中,留给main函数调出. ...
- _ZNote_编程语言_Qt_信号槽实现_拖拽方式使用控件
所谓的信号槽,实际上就是观察者模式. 当某个事件发生后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal). 这种发出信号是没有目的的,类似于广播.如果对象对这个信号感兴趣,它就会使 ...
- (线段树 区间运算求点)Flowers -- hdu -- 4325
http://acm.hdu.edu.cn/showproblem.php?pid=4325 Flowers Time Limit: 4000/2000 MS (Java/Others) Mem ...