在 freeradius radius 服务器中使用 SHA1 用户密码字段

在 freeradius radius 服务器中使用 SHA1 用户密码字段

我有专有的 Web 应用程序,该应用程序以 sha1$79b2c$b3704ec5703ef28ded379cf6c6de4c4160aa029b 的形式存储用户密码。这是一个加盐的 sha1 哈希。

  1. 我也想将此预保存的信息用于 freeradius。Crypt-Password 属性在 radius 中定义,但据我所知,它只是密码的 md5 哈希值。我试过了,但没有按我预期的那样工作。如何在 freeradius 中使用相同的证书进行用户验证?是否可以运行一些脚本并根据其返回值接受?

  2. 如果我更改专有 Web 应用程序以在另一种形式上保存用户凭据,我应该选择什么才能与 Freeradius 兼容?除了 Cleartext 和 MD5。

答案1

我已经找到了如何回答问题 B 部分的方法:

形式 sha1$79b2c$b3704ec5703ef28ded379cf6c6de4c4160aa029b 包含以下部分:sha1$SALT$SALTEDPASSWORD

在 Radius 中,这被命名为 SSHA-Password Ref:http://www.packtpub.com/article/freeradius-authentication-storing-passwords 参考:http://freeradius.org/radiusd/man/rlm_pap.txt

1- 使用 Ref1 中的脚本创建 Salted SHA1 哈希。prop-to-ssha.pl UserClearPass SALT

输出可分配给属性

SSHA 密码 := OUTPUTOFPERLSCRIPT

这很有效。我可以自动化我的专有应用程序,并在创建用户时创建 radius 密码条目。

对于问题的第一部分,我还没有答案。

答案2

这在 Java 中有效

// Salted SHA1 with a random salt appended
String salt = UUID.randomUUID().toString().replaceAll("-", "");
hashPass = Base64.encodeBase64String(ArrayUtils.addAll(
                                DigestUtils.sha1(currPass.concat(salt)),
                                                salt.getBytes()));

您现在可以在 RadCheck 表中添加具有“SSHA-Password”属性的“hashPass”。 Base64摘要工具来自 Apache Commons。

相关内容