eryajf / go-ldap-admin

🌉 基于Go+Vue实现的openLDAP后台管理项目
http://ldapdoc.eryajf.net
Apache License 2.0
1.51k stars 256 forks source link

🙋 问题交流。。。 想交流下,这边 明文密码 在mysql 和ldap 是怎么加密的流程,我现在想 对密码加密 然后去对比ldap的密码 或者是 ldap密码解密 然后对比明文密码 #315

Closed backlash-go closed 5 months ago

backlash-go commented 5 months ago

Question Report

请在提交问题之前回答这些问题,谢谢。 | Please answer these questions before submitting them. Thank you.

你使用了哪个版本? | Which version did you use?

预期行为 | Expected behavior

实际行为 | Actual behavior

原因分析(如果可以) | Cause analysis (if possible)

问题重现步骤 | Steps to reproduce the problem

eryajf commented 5 months ago

您好 @backlash-go👋,我已收到您的反馈,我将安排时间考虑您提交的信息并进行回复。-- 这条信息是由自动回复的机器人发出的。

Hello @backlash-go. I have received your feedback, and I will arrange time to consider the information you submitted and reply. -- This message is sent by an automatic reply robot.

eryajf commented 5 months ago

ldap里边使用 ssha 的加密方式,这个加密不可逆,无法解出明文密码。对应方法为:

https://github.com/eryajf/go-ldap-admin/blob/d00d6df8a114e0d4378dffeadf2c8f602b9dd13d/public/tools/ssha.go#L14

MySQL中的加密方法为RSA,下边对应还有一个解密的方法(这个方法算是预留的,理论上MySQL也应该使用不可逆的加密方式,只不过这里选择了一个可逆的方案。)。

https://github.com/eryajf/go-ldap-admin/blob/d00d6df8a114e0d4378dffeadf2c8f602b9dd13d/public/tools/bcrypt_passwd.go#L25

backlash-go commented 5 months ago

ldap里边使用 ssha 的加密方式,这个加密不可逆,无法解出明文密码。对应方法为:

https://github.com/eryajf/go-ldap-admin/blob/d00d6df8a114e0d4378dffeadf2c8f602b9dd13d/public/tools/ssha.go#L14

MySQL中的加密方法为RSA,下边对应还有一个解密的方法(这个方法算是预留的,理论上MySQL也应该使用不可逆的加密方式,只不过这里选择了一个可逆的方案。)。

https://github.com/eryajf/go-ldap-admin/blob/d00d6df8a114e0d4378dffeadf2c8f602b9dd13d/public/tools/bcrypt_passwd.go#L25

那同样的明文密码加密 可以 获得相同的 加密之后的密码吗? 要不然这边ldap 接 自己开发的登录平台 好像没法校验了

eryajf commented 5 months ago

你看看加密的时候使用两种方式,那么加密后的密文肯定也是不一样的。

ldap对接的登陆平台,登陆的时候,由ldap服务端校验,不必操心这个事儿。

backlash-go commented 5 months ago

你看看加密的时候使用两种方式,那么加密后的密文肯定也是不一样的。

ldap对接的登陆平台,登陆的时候,由ldap服务端校验,不必操心这个事儿。

大佬意思是。使用ldap.bind 使用查用户的dn 然后 bind 用户dn 加上原始密码去 做校验是吧

eryajf commented 5 months ago

你看看加密的时候使用两种方式,那么加密后的密文肯定也是不一样的。 ldap对接的登陆平台,登陆的时候,由ldap服务端校验,不必操心这个事儿。

大佬意思是。使用ldap.bind 使用查用户的dn 然后 bind 用户dn 加上原始密码去 做校验是吧

事实上ldap的登陆校验,是ldap server自身做的事情,比如你自己的一个平台,想要对接ldap,只要确保配置了admin的认证信息,那么登陆的时候,会针对用户进行校验。这块儿你实践一下就理解了

backlash-go commented 5 months ago

你看看加密的时候使用两种方式,那么加密后的密文肯定也是不一样的。 ldap对接的登陆平台,登陆的时候,由ldap服务端校验,不必操心这个事儿。

大佬意思是。使用ldap.bind 使用查用户的dn 然后 bind 用户dn 加上原始密码去 做校验是吧

事实上ldap的登陆校验,是ldap server自身做的事情,比如你自己的一个平台,想要对接ldap,只要确保配置了admin的认证信息,那么登陆的时候,会针对用户进行校验。这块儿你实践一下就理解了 ok thank you