我有一个带有集中用户数据库的系统,其中存储了用于不同应用程序的用户名和密码。 数据库是在PostgreSQL中创建的。 FreeRDAIUS通过OpenLDAP访问用户和密码,OpenLDAP使用PostgreSQL作为后端系统。密码应该以其哈希格式存储。 我已经使用存储在数据库中的SHA1密码测试了FreeRADIUS,并且用户已成功通过身份验证。我将预先存储的{SHA}存储在摘要中,它完美地运行。但是,此哈希需要在base64中,并且“=”作为填充字符。我使用ldap实用程序slappasswd生成了base64哈希摘要。
实际上,我应该使用C函数在数据库中插入用户,并且可用的加密库(如OpenSSL)仅提供hex哈希函数,我认为最好的方法是知道如何告诉FreeRDAIUS这个摘要存储在数据库中的不是base64而是HEX。
有谁知道我怎么做到这一点?看来如果我只是将{SHA}放在散列值之前,它只适用于带有FreeRADIUS的base64。我还想知道FreeRADIUS是否支持其他哈希算法,如SHA256。
操作系统:Ubuntu 12.04 LTS PostgreSQL:9.1 FreeRADIUS:2.1.10答案 0 :(得分:0)
当前没有发布的版本支持任何SHA-2哈希算法。
FreeRADIUS 2.1.10中的rlm_pap模块应该自动“正常化”'已知良好'密码,即将六角形转换为二进制,并将其分配给正确的control:
属性。对于hexits,它的工作方式与base64相同。
更新的 https://github.com/FreeRADIUS/freeradius-server/commit/0bd0f7453adb2c331a9c1127eda9c9a9fe203b2d