基本的な疑問があるか、基本的に何かを見逃しているようです。 Androidアプリについて話す場合、リソース/ APIへのアクセスは、アクセストークンと更新トークンを使用して保護されます(OAuth = 2.0)。
私が理解していることから、これはそれがどのように機能するかです:
今私の質問は:
これにより、APIへの不正アクセスを防止するという元々の問題をどのように解決しますか?私の意見では、実際にはそれをさらに促進します。
アクセストークンが侵害された場合、リフレッシュトークンも同じように侵害される可能性が高いのではないでしょうか。また、更新トークンは非常に長期間有効なトークンであるため、攻撃者はそれを使用して(更新トークンの有効期限が切れるまで)、新しい承認済みアクセストークンを生成し続けることができます。あれは正しいですか ?
これを理解してください。
更新トークンの主な利点は、セキュリティが侵害されているかどうかを簡単に検出できることです。
次の2つのシナリオを検討してください。
シナリオ1では、認証トークンが危険にさらされている場合、だれもこれを検出するのは難しく、不正なアクセスが無期限に続く可能性があります。
シナリオ2では、認証トークンのみが危険にさらされている場合(更新トークンも危険にさらされていない場合)、トークンが期限切れになるまでしか継続できません。
シナリオ2では、更新トークンが危険にさらされている場合、更新トークンが呼び出されると、その更新トークンを使用して生成された他のすべての認証トークンが無効になるため、一度に1つのパーティーのみが(更新トークンごとに)APIを使用できます。その結果、複数のユーザーが新しいトークンを生成してお互いの認証トークンを繰り返し無効にすることになります。 authトークンの有効期限が切れる前に更新が行われるため、APIは違反を検出でき、更新トークンを即座に取り消すことがわかっています。