11

認証に tymondesigns/jwt-auth を使用する laravel REST API があり、前にロード バランサーを使用して単一サーバーから複数サーバー構成にアプリケーションをスケーリングしたいと考えています。

フローは RefreshToken ミドルウェアを使用し、基本的にトークンはリクエストごとに無効化され、レスポンスとともに新しいトークンが返されます。( https://github.com/tymondesigns/jwt-auth/wiki/Authentication )

トークンが1つのサーバーを使用して無効化され、無効化されたトークンを使用する新しいリクエストが別のサーバーでヒットするマルチサーバー構成で、jwtは無効化されたトークンをどのように管理しますか?

4

1 に答える 1

2

正しい方法は、およびクレームと一緒にjti クレームを含めることです。expiat

もう 1 つの方法は、(可能であれば) トークンにサーバー ID (または一意のキー) を含めることです。サーバー間 jwt プロトコルを実装できますが、これにはコストがかかると思います。

もう 1 つの方法は、サーバー間でトークンを同期する必要があることです。新しく無効化されたトークンのリストを維持する memcached デーモン (おそらくフロント サーバー上) を使用します。トークンが 1 つのリクエストに対してのみ有効な場合、memcached は無効化されたトークンを使用するとすぐに受け取ります (おそらく RefreshToken ミドルウェアで)。トークンのタイムスタンプに基づいて、(memcached サーバーに移動せずに) トークンが無効かどうかを判断できます。または、トークンがかなり新しい場合は、消費されたトークンの memcached リストをチェックインします。memcached にも有効期限があります。この方法には多くの利点があります (たとえば、タグを使用できます)。このリストをログ ファイルと考えても、ステートレスの原則を無効にしていないと言えます :)

それが役立つことを願っています。

于 2015-10-11T21:32:09.080 に答える