问题

小米的openfalcon在使用ldap首次登陆成功后,会在本地创建同名的账号, 这就有个问题当你更新了ldap的密码时,openfalcon是没有同步本地账号密码的功能

二次改造

  1. 方便我们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)
  2. 添加两个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
  3. 重构登陆函数

    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密码同步的更多相关文章

  1. 记一次LDAP主从同步配置

    LDAP主从同步 OpenLDAP在2.3版本之前的同步复制带有一系列缺点如只支持一主多从模式等,在此缺点就不多说,下文着重介绍一下OpenLDAP V2.4以后的同步负复制功能 同步功能 2.4版最 ...

  2. Azure Active Directory Connect密码同步问题

    这几天一直在弄O365与本地域账号的密码同步问题.由于微软即将用Azure Active Directory Connect(以下简称AADC)这个同步工具替代之前的DirSync,所以我也研究了下这 ...

  3. 如何将多个 Apple 设备中保存在 iCloud 里面密码同步

    如何将多个 Apple 设备中保存在 iCloud 里面密码同步 iCloud 钥匙串 密码同步 数据迁移 iOS iCloud 钥匙串会记住一些信息,因此您就无需记忆这些信息. 它会在您批准的任何设 ...

  4. 通过PowerShell启用AADC的密码同步功能

    在AADC工具里面也可以启用. 下面这个是世纪互联工程师提供的Powershell脚本(我测试了下是可以的),其中,$adConnector和$aadConnector可以在AADC工具里面找到. $ ...

  5. 19 Go的全能ORM简单入门

    gorm 昨天我的ldap账户改了以后,openfalcon(v2.1)-dashboard竟然无法登陆了!显然,没有把我的密码同步到本地数据库里面,怎么办?只能改openfalcon用户认证的源码了 ...

  6. 实验记录贴 —— 账号同步实验 RTX 和 LDAP(AD域)

    目前,公司有多个系统,RTX,邮箱(MD),OA,NC. 这些系统之间,如果要实现单点登录的话,账户肯定需要同步,或者某一种映射机制. 如果所有数据都和中央账号数据库(LDAP,这里是AD域)看齐,那 ...

  7. [原创]django+ldap实现统一认证部分一(django-auth-ldap实践)

    前言 接之前我的文章,django+ldap+memcache实现单点登录+统一认证 ,ldap部署相关,ldap双机\LAM配置管理\ldap备份还原,目前来说,我们已经有了高可用性的ldap环境了 ...

  8. 07: Django 使用ldap登录、注销等

    目录:Django其他篇 01:Django基础篇 02:Django进阶篇 03:Django数据库操作--->Model 04: Form 验证用户数据 & 生成html 05:Mo ...

  9. lsyncd 实时同步

    1. 几大实时同步工具比较 1.1 inotify + rsync 最近一直在寻求生产服务服务器上的同步替代方案,原先使用的是inotify + rsync,但随着文件数量的增大到100W+,目录下的 ...

随机推荐

  1. extjs如何使用

    刚学ExtJs 不知道如何使用.. 我的操作步骤如下: 1. 在项目中导入ExtJs 2. 创建了一个one.js 和 helloworld.html 3. one.js中的代码如下: Ext.Mes ...

  2. php-fpm安装、配置与优化

    转载自:https://www.zybuluo.com/phper/note/89081 1.php中fastcgi和php-fpm是什么东西 最近在研究和学习PHP的性能方面的知识,看到了factc ...

  3. Apache和nginx 域名配置

    apache配置 一.hosts配置: 1.用编辑器打开hosts文件,位置:C:\Windows\System32\drivers\etc目录下 2.在hosts文件里添加自己的域名配置,配置规则如 ...

  4. SPRING 集成 activemq 的 topic 模式

    概要 activemq 支持两种模式: 1.队列模式 2. 发布订阅者模式,topic有一个主题可以有多个订阅者.这种情况可以将一个消息,分发到多个消费者. 比如我有这样一个案例,用户需要同步,而且需 ...

  5. Basic Router Architecture

    from the book principles and practices of interconnection networks  the chapter router architecture ...

  6. C语言三种方法调用数组

    #include <stdio.h> /********************************* * 方法1: 第一维的长度可以不指定 * * 但必须指定第二维的长度 * *** ...

  7. fPLL结构及动态配置

    输入参考时钟 从上图可以看到参考时钟输入的几种类型.   注意:fPLL的校正是由CLKUSR来驱动的,这个时钟必须要保持稳定. 参考时钟利用器     N计数器 N计数器会把参考时钟利用器输出进行分 ...

  8. Linux下VNC配置使用总结:开启+桌面配置+安全访问

    操作环境:CentOS 5.3 + Windows XP SP3 32bit + RealVNC 4.1.2 i386 + TigerVNC. 参考:潇湘隐者-Linux系统VNC配置实践总结,萨米的 ...

  9. Oracle 数据库 dbConsole 配置笔记

    Oracle安装后,DBConsole有时安装会失败,这时可以通过以下命令恢复: set oracle_sid=orclemca -repos recreateemca -config dbcontr ...

  10. ADALINE小demo

    线性逼近 clear;clc;close all x = [1,0.5; 1.5,1.1; 3,3; -1.2,-1]; y = x(:,2); x = [ones(size(x,1),1),x(:, ...