Webサーバーへのアクセスを保護しようとしています。
私はランダムに秘密鍵を生成し、それをそのユーザーに関連付けるJSON Webトークン認証を実装しています。その後、秘密鍵を使用してJSON Webトークンをエンコードします。次に、ユーザーはJSON Webトークンを使用してWebサーバーにアクセスします。
この簡単な方法も考えていました。ランダムにキーを生成してユーザーをそれに関連付けない理由はありますか?それで認証しますか?
どちらの方法でもかまいませんが、認証をステートレスにするかどうかによって異なります。
JWTの利点:
短所:
アプリケーションのリスク選好度にもよりますが、これはすべての認証ロジックをサーバー側に移動するのに十分大きなデメリットになる可能性があります。
2つを組み合わせて、認証済みのトークンをクライアント側で検証されたサーバー側で提供できることに注意してください(つまり、JWT内のトークンはMACによって検証され、トークン自体はデータベースに保存されます)。これは、攻撃者がMACの検証に使用される秘密鍵を知らずにセッションIDを直接使用してセッションを乗っ取ることができないため、攻撃によってセッションテーブルが公開される状況から保護します。