次のFlask RESTful Destroy User Tokenでは、Flask トークンを破棄する方法について説明していますが、これは中間者攻撃を防ぐものではありません。有効期限が切れる前にトークンがアクティブでなくなるように、トークンを無効にする方法はありますか?
1 に答える
参照した質問に示されているトークンは、一部のデータに暗号署名を追加することによって作成されます。通常、トークンに格納されるデータには、トークンの所有者 (ユーザー ID など) が含まれ、有効期限も含まれる場合があります。
これらのトークンの優れた点は、すべての有用なデータがトークン内に格納されるため、データベースに何も格納する必要がないことです。トークンをクライアントに渡すだけで、クライアントがそれを送り返したら、それをデコードし、その中の情報を使用してクライアントが誰であるかを知ることができます。
このアプローチの欠点は、トークンがどこにも保存されないため、トークンを取り消す簡単な方法がないことです。このメカニズムを拡張して失効を許可するには、失効したトークンを格納するデータベース テーブルを追加します。次に、トークンの検証中に、トークンをデコードするだけでなく、トークンが失効リストに含まれていないことを確認します。
別のまったく異なるアプローチは、署名付きトークンを使用しないことです。トークンをランダムな UUID にして、各ユーザーのユーザー テーブルに格納するだけです。インデックスを作成すると、クライアントがトークンを送信すると、データベース検索でユーザーを見つけることができます。トークンの取り消しは、ユーザーのトークン フィールドをクリアするだけで簡単に実行できます。
これが役立つことを願っています!