odoo ldap plus admin mode local and remote password

双份密码
ODOO配置LDAP模式后,同一个用户有本地密码和LDAP密码,可相同也可不同,两个密码只要任意一个通过验证都可以登录系统

本地密码
本地密码修改需要先验证旧密码是否正确,根据上条定律任意一个本地或远程原密码通过验证即可更新本地新密码

远程密码
远程密码可以做为超级密码来不断重置本地密码

管理模式
配置新增ldap_binddn_admin布尔属性用于确认是否启用LDAP binddn管理员模式,即授权SUPERUSER直接修改用户LDAP远程密码

改密区别

  • 默认普通模式下三种情况:

1、本地和LDAP密码相同,本地和LDAP都更新为新密码
2、本地和LDAP密码不同,本地旧密码通过验证,直接更新本地新密码,但LDAP无法通过验证同步修改
3、本地和LDAP密码不同,LDAP旧密码通过验证,直接更新本地与LDAP新密码

  • 开启Admin管理模式统一:
    1、本地密码和LDAP密码只要通过一个旧密码验证就可以同步双写统一为新的密码

python ldap userPassword salt sha md5 encrypt

odoo自带的auth_ldap模块虽然实现了ldap统一账户的验证,但如果用户一旦修改密码就变成同名的本地用户。这是因为odoo默认先验证本地res.users信息,如果没有记录,或者有记录但密码字段为空才会去ldap服务器验证

根据其原理,可以在修改密码的时候对接上ldap的密码信息就完美了,但用modify指令写入的userPassword值是原文存储,即明文直接写入在服务器也是明文,这就需要在请求端预先加密成ldap标准的密文格式

网上看到有很多php的实现都是要写点代码什么的,照葫芦折腾几下才发现python的passlib库居然有现成拿来即用的函数

以此类推

其中ldap_bcrypt,ldap_bsdi_crypt,ldap_des_crypt,ldap_hex_md5,ldap_hex_sha1,ldap_md5,ldap_md5_crypt,ldap_pbkdf2_sha1,ldap_pbkdf2_sha256,ldap_pbkdf2_sha512,ldap_plaintext,ldap_salted_md5,ldap_salted_sha1,ldap_sha1,ldap_sha1_crypt,ldap_sha256_crypt,ldap_sha512_crypt等都是ldap加密相关的兄弟函数,可谓是应有尽有非常丰富,看来在odoo端直接集成phpLDAPadmin里各种类型的加密密码更新都是易事了