![有没有办法将现有的 matrix-synapse 用户数据库迁移到 OpenLDAP?](https://linux22.com/image/763452/%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E5%B0%86%E7%8E%B0%E6%9C%89%E7%9A%84%20matrix-synapse%20%E7%94%A8%E6%88%B7%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%81%E7%A7%BB%E5%88%B0%20OpenLDAP%EF%BC%9F.png)
我正在寻找一种方法来迁移一个巨大的突触主服务器数据库迁移到 OpenLDAP,而无需重置用户密码。迁移到 LDAP 是必要的,因为我们希望将所有在线服务相互集成
因此,我正在寻找一种让 OpenLDAP 理解 Synapse 的密码哈希的方法。
Synapses hashing 算法解释这里:
pw = unicodedata.normalize("NFKC", password)
hashed = bcrypt.hashpw(
pw.encode('utf8') + password_pepper.encode("utf8"),
bcrypt.gensalt(bcrypt_rounds),
).decode('ascii')
是否可以在 OpenLDAP 或任何其他开源 LDAP 服务器上实现这样的散列?
答案1
如果 bcrypt 是底层系统的有效算法,它应该作为OpenLDAP 的 CRYPT 密码存储方案。
例如,如果你现有的密码哈希看起来像$2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
您应该能够将userPassword
OpenLDAP 的属性设置为{CRYPT}$2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
,然后进行身份验证。
(如果您在命令行上执行此操作,请确保$text
在输入数据库之前不会被解释为 shell 变量。)