1. ホーム

[解決済み】JWTリフレッシュトークンフロー

2022-04-05 03:09:41

質問

モバイルアプリを作成中で、認証にJWTを使用しています。

JWTアクセストークンとリフレッシュトークンをペアにして、アクセストークンを好きな頻度で失効させるのが一番いいようです。

  1. リフレッシュトークンとはどのようなものですか?ランダムな文字列ですか?その文字列は暗号化されていますか?それは別のJWTですか?
  2. リフレッシュトークンは、アクセス用のユーザーモデル上のデータベースに保存されますよね?この場合、暗号化されている必要があるように思います。
  3. ユーザーログイン後にリフレッシュトークンを送り返し、クライアントが別のルートにアクセスしてアクセストークンを取得するようにすればいいでしょうか?

解決方法は?

JWTやリフレッシュトークンの話なので、OAuth2.0の話だとすると......。

  1. アクセストークンと同様に、原則的にリフレッシュトークンは、あなたが説明したすべてのオプションを含む任意のものにすることができます。JWTは、認証サーバがステートレスにしたい場合や、それを提示するクライアントにある種の「所有の証明」のセマンティクスを強制したい場合に使用することができます。リフレッシュ・トークンは、リソース・サーバに提示されず、最初にそれを発行した認可サーバにのみ提示されるという点でアクセストークンと異なるので、JWT-as-access-tokensの自己完結型の検証最適化はリフレッシュ・トークンには当てはまらないことに注意してください。

  2. データベースが他の関係者/サーバー/アプリケーション/ユーザーからアクセス可能であれば、イエスです(ただし、暗号化キーをどこにどのように保存するかによって、マイルレートが変わるかもしれません......)。

  3. 認可サーバーは、クライアントが取得するために使用するグラントに応じて、アクセストークンとリフレッシュトークンの両方を同時に発行することができます。