0

ユーザーが自動的にログインできるように、Cookie を設定しようとしています。

Cookie の認証時にセッション文字列を DB にクエリしたくありません (基本的に、ほとんどの API が呼び出されるたびにクエリを実行する必要があり、高速化したいと考えています)。

私が見つけた解決策は、Cookie にハッシュを設定し、認証時に復号化を試みることです。復号化に成功した場合は、ユーザーをログインさせます。

どのハッシュ方法を使用すればよいのでしょうか? プログラムで一定のソルトを使用し、userName をそのソルトでハッシュし、ハッシュされた userName と元の userName を Cookie に保存し、認証時に userName を復号化されたハッシュと照合しようとしますか?

私はハッシュ関数に慣れていないので、Java でどのようにすればよいか、誰か親切に提案してもらえますか?

4

3 に答える 3

1

セッションごとに生成される一意のトークン キーを使用することをお勧めします。たとえば、クライアントがコンピュータから一度ログインした場合、このトークンはパスワードが変更されるまで有効です。クッキーの期限切れは完全に安全ではありません...

簡単な認証にセッション変数を使用することもできます。ユーザーのセッション変数を設定すると、このユーザーがこのセッション ID でリクエストを送信するたびに; セッション変数は、このセッション ID だけに到達します。ほとんどのプラットフォームでは、DB を使用してこれらの変数を格納することもできます。

于 2013-03-05T08:56:02.317 に答える
0

2 つのアプローチ:

1) 独自の認証フレームワークを作成します。この場合、ユーザー名の暗号化された値を Cookie に入れることをお勧めします (ハッシュを使用することは強くお勧めしません。ユーザー パスワードの値も入れないでください)。暗号化には、BouncyCastle で AES-256 暗号化を使用してください: 256bit AES/CBC/PKCS5Padding with Bouncy Castle フレームワークが Cookie の復号化に成功すると、ユーザーは認証されます。フレームワークが Cookie を復号化できない場合、またはユーザーが存在しない場合、ユーザーは認証されていません。

2) Spring Security フレームワークの使用を検討してください: http://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html これは優れたフレームワークであり、多くの問題を解決します。認証/承認の問題。あなたの問題は「RememberMe」機能によって解決されます: http://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#ns-remember-me

よろしくお願いします、

マイケル

于 2013-03-05T09:25:23.563 に答える
0

私はJavaのバックグラウンドを持っていませんが、ハッシュキーは決して公開されるべきではありません.

例:- あなたのケースでは UserName が重要であり、名前は非常に一般的で既知のものであるため、使用しているメカニズムを知っている仲間の開発者の 1 人がそれを分解できます。

最善の方法はわかりませんが、UI に表示されない UserID(GUID) を使用しました。

于 2013-03-05T10:00:18.050 に答える