web-dev-qa-db-ja.com

ユーザー認証情報を使用してJSON Web Token(JWT)認証トークンを更新することは安全ですか?

私がこの質問の答えを理解していると JWT:期限切れのトークンを更新することは良い戦略ですか? 、期限切れの認証トークンを更新するには更新トークンを使用する必要があります。

私のWebアプリはステートレスでなければならず、リフレッシュトークンが取り消されたかどうかはわかりません。リフレッシュトークンを使用しても意味がありません。

代わりに、ユーザー認証情報をもう一度送信して新しい認証トークンを取得するだけで、認証トークンを更新します。これが機能するためには、クライアントが資格情報をメモリに保存する必要がありますが、これは問題になる可能性があります。

これを達成する他の方法はありますか、または取り消された更新トークンのリストを追加する唯一の安全な方法はありますか?

2
Hendrik

更新メカニズムは、資格情報の保存を回避するために正確に構築されています。認証情報を使用すると、アカウント全体にアクセスできますが、refresh tokenを使用すると、指定したドメインで機能するauth tokensにのみアクセスできます。

アプリはステートレスですが、認証情報を保存できるのに、更新トークンを保存できないのはなぜですか?
さらに、アプリは、更新トークンの有効期限を処理するのと同じくらい、資格情報の有効期限を処理する必要があります。資格情報が期限切れになるいくつかの方法を次に示します。

  • ユーザーがパスワードを変更しました
  • ユーザーがアプリを実行する権利を失った
  • アカウントが一時停止されました
  • ユーザーがユーザー名を変更しました

したがって、従うべき基本設計は次のとおりです。

  1. auth tokenを使用してリソースAPIと通信してみてください
  2. 1.が失敗した場合は、auth tokenrefresh tokenで取得してみてください
  3. 2.が失敗した場合は、ログインビューを表示して新しいrefresh tokenを取得します

OAuthを使用しているようです。フォローしているデザインパターンを尊重してください。パターンから何かを行うと、リスクにさらされます。

セッションを取り消す可能性をユーザーに提供することもできます(refresh token)。そうすることで、パスワードを変更せずに、侵害されたデバイスをログアウトできます。パスワードを保存する場合、デバイスをリモートでログアウトするには、パスワードを変更する必要があるため、すべてのデバイスからログアウトします。

2
Thibault D.