web-dev-qa-db-ja.com

freeradiusradiusサーバーでのSHA1ユーザーパスワードフィールドの使用

ユーザーパスワードをsha1 $ 79b2c $ b3704ec5703ef28ded379cf6c6de4c4160aa029bの形式で保存する独自のWebアプリケーションがあります。これはsaltedsha1ハッシュです。

  1. この保存済みの情報をフリーラジアスにも使用したいと思います。 Crypt-Password属性はradiusで定義されていますが、AFAIKはパスワードのmd5ハッシュにすぎません。私はこれを試しましたが、これは期待どおりに機能しませんでした。 freeradiusでのユーザー検証に同じ証明書を使用するにはどうすればよいですか?スクリプトを実行して、その戻り値に従って受け入れることは可能ですか?

  2. ユーザーの資格情報を別のフォームに保存するように独自のWebアプリケーションを変更した場合、Freeradiusとの互換性を確保するために何を選択する必要がありますか?クリアテキストとMD5を除く。

4
seaquest

私は質問パートbのやり方を見つけました:

フォームsha1 $ 79b2c $ b3704ec5703ef28ded379cf6c6de4c4160aa029bには、sha1 $ SALT $ SALTEDPASSWORDのような部分があります。

Radiusでは、これはSSHA-Password Ref: http://www.packtpub.com/article/freeradius-authentication-storing-passwords Ref: http://freeradius.org /radiusd/man/rlm_pap.txt

1- Ref1のスクリプトを使用して、SaltedSHA1ハッシュを作成します。 prop-to-ssha.pl UserClearPass SALT

これの出力は、属性に割り当てることができます

SSHA-パスワード:= OUTPUTOFPERLSCRIPT

そして、これは機能します。独自のアプリケーションを自動化し、ユーザーの作成中にradiusパスワードエントリを作成することもできます。

質問の一部については、まだ回答がありません。

2
seaquest

これは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'を追加できるようになりました。 Base64およびDigestUtilsはApacheCommonsからのものです。

0
kervin