我有一个带有自定义身份验证方法的 RADIUS 服务器。我有一个 Mysql 数据库,其中包含 Django CMS 的密码,这些密码在 PBKDF2_SHA256 中进行哈希处理,因此我必须编写自定义身份验证脚本。我的 RADIUS 身份验证部分如下所示:
authorize {
update control {
Auth-Type := `/usr/bin/php -f /usr/djangologin/cpauth.php %{User-Name} %{User-Password}`
}
}
该脚本使用以下方式检查密码python passlib返回 true 或 false,因此 RADIUS 返回 Access-Accept 或 Accept-Reject。
现在我必须设置一个 LDAP 服务器,因为我们的一个新软件(Ulteo)不支持 RADIUS 身份验证。
我以前从未使用过 LDAP。在尝试实现不可能之前,我的主要问题是:
1.我不知道密码到底是如何存储的。它们是如何加密的?我知道它们存储在 /etc/shadow 中。它们是用 MD5 还是 SHA256/512 加密的?
2.是否可以使用 RADIUS 作为 LDAP 服务器的身份验证方法?例如,用户想要通过 LDAP 服务器进行身份验证。LDAP 服务器查找用户名并将其传递给 RADIUS。成功后,RADIUS 返回 Access-Accept,LDAP 服务器确认登录成功。
3. 如果2.不可能:有没有办法创建自定义身份验证方法,就像我为 RADIUS 创建的一样?有没有更好的方法来实现我的目标?
谢谢你!
答案1
在大多数 LDAP 服务器中,密码存储在服务器托管的目录中。我认为最简单的方法是将密码存储在 LDAP 中,然后根据 LDAP 验证 RADIUS 和其他所有内容。但是,例如 OpenLDAP 支持 SASL,因此您可以根据其他内容(通常是 Kerberos)验证 LDAP。