在freeradius radius server中使用SHA1用户密码字段

我有专有的networking应用程序,以sha1 $ 79b2c $ b3704ec5703ef28ded379cf6c6de4c4160aa029b的forms存储用户密码。 这是一个盐腌sha1哈希。

  1. 我也想用freeradius这个预设的信息。 Crypt-Password属性在半径中定义,但AFAIK只是密码的md5散列。 我试过这个,但是这没有按照我的预期工作。 我怎样才能使用相同的ceredentials在freeradiusvalidation用户? 是否可以运行一些脚本并接受其返回值?

  2. 如果我更改专有Web应用程序以保存另一个表单上的用户信用,我应该select与Freeradius兼容吗? 除了Cleartext和MD5。

我已经find了如何做的问题部分B:

表单sha1 $ 79b2c $ b3704ec5703ef28ded379cf6c6de4c4160aa029b包含以下部分:sha1 $ SALT $ SALTEDPASSWORD

在半径,这被命名为SSHA密码参考: http : //www.packtpub.com/article/freeradius-authentication-storing-passwords参考: http ://freeradius.org/radiusd/man/rlm_pap.txt

1-使用Ref1中的脚本创build一个Salted SHA1散列。 prop-to-ssha.pl UserClearPass SALT

这个输出可以被认为是属性

SSHA密码:= OUTPUTOFPERLSCRIPT

这工作。 我可以自动化我的专有应用程序,并创build用户时创build一个半径密码input。

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

这在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())); 

你现在可以用'SSHA-Password'属性在RadCheck表中添加'hashPass'。 Base64DigestUtils来自Apache Commons。