安全なシステムを構築していますが、メッセージを送信するユーザーがアクセスキーを受け取ったユーザーと同じであることを確認する必要があります。例。Java WSでセッション情報を保存する場所
ユーザBobは、彼だけのユニークなプロパティuniqueCode
を持ち、サーバからさまざまな情報を受け取ることができます。
さまざまな機密データを返すさまざまな方法があるWebサービスがあります。ユーザーが最初に使用しているクライアントは、Webサービスに接続すると、それは
- このユーザー
- ための疑似ランダムキーを生成するサーバー上でそのキーを保存していること、authenticateメソッドを経由してそうし、それを返しますユーザー。
その後、クライアントからWSへの要求には、uniqueCode
とそのキーが必要です。ペアが有効な場合、要求は必要な情報を返します。 x分間のアクティビティがなかった場合、キーは無効になり、クライアントはユーザーに再度ログインするように要求します。
私の質問は、サーバーにキーを格納する方法です。キーはJavaオブジェクトであり、シリアル化することができます。
マイオプション
- セッションに保管してください。これは、同社のシニアプログラマが示唆したことですが、それは行く方法ではないようです。私が読んだところでは、WSは基本的なHTTPセッションに頼ってはならないことを示唆しています。
- データベースに保管してください。可能な解決方法ですが、それは特定のデータベースを作成して、問題にまったく別のレベルを追加する必要があります。
- バイナリで暗号化されたファイルに保管してください。これは行く道だと思われるが、それは?私はログイン時に鍵を生成するので、鍵+いくつかの情報をバイナリファイルに保存し、それを暗号化してユーザに渡すことができます。私が受け取ったキーがユーザーファイルを解読でき、その情報が正しい場合は、ユーザーが要求した情報を返します。
私の考えは正しいのですか、何か不足していますか?誰かが私のシステムにアクセスすると、dbに侵入するのは簡単ですが、別のユーザーのキーを知らずにファイルを解読するのは非常に難しいので、最後の方が最善の方法だと思います。
ありがとうございます!
はい、これが望ましいでしょうし、使いやすさの向上にもつながります。残念ながら、私が保持しなければならない鍵がオブジェクトであれば、それをどのようにMySQLデータベースに保存するのですか?シリアライズし、暗号化してから、ブロブとして保存しますか? –
@JanisPeisenieksキーにテキスト形式がある場合は、シリアライズとBLOBの代わりに使用することができます。暗号化に関しては、誰かがあなたのデータベースを脅かす恐れがある場合はそれを行います - しかし、その時点では、とにかくユーザセッションよりも大きな心配があります。 – jmruc
OK、ありがとう、いつも再確認を聞いてうれしい。 –