OAuth2アクセストークンは有効期限が切れている必要はありません(つまり、有効期限が切れますが、それから何年もかかる可能性があります)。
アクセストークンは、リソースサーバーから特定のリソースを取得するために一度使用できます。特に、ユーザーによって承認されたリソースの取得が可能になります。一方、更新トークンを使用すると、繰り返しアクセスできます。したがって、すべてのアクセス間でユーザーの操作を必要とせずに、更新トークンを廃止することはできません。
ただし、一般的に、トークンは、同じデバイス上の他の悪意のあるアプリや、電話に対するMITM攻撃によって盗まれる可能性があります。電話が危険な証明書を信頼するようにできる場合、SSLはMITM対応です。これは、企業が内部ネットワークにアクセスするために必要になる場合があります(自己署名証明書を受け入れる必要があります。これにより、企業ネットワーク上で発生するすべての暗号化トラフィックをMITMに送信できます。したがって、トークンを暗号化して送信すると、途中で盗まれることはありません。危険な。
ベアラートークンは、他の形式のトークン自体よりも弱いものではありません。これは、一連の論文で証明されています(私自身のものを含み、掘り下げることができるときにリンクを投稿します)。ただし、ベアラートークンは彼らが行う仮定が有効である場合に適切です。トークンを秘密に保つことができるという仮定は、一般にベアラトークンの主要な仮定です。これが当てはまらない場合、ベアラトークンはセキュリティプロパティをアサートしません(ただし、一部は保持されます)。OAuth Bearer Tokensで指定されているように、ベアラートークンがどの攻撃を打ち負かす必要があるかを定義するNISTレベル3トークンを参照してください。要するに、無記名トークンはトークンの盗難を打ち負かすことは想定されていません。
ベアラートークンを取り消すことはできません、それは本当です。ただし、通常のアクセスパターンでは、取得直後にアクセストークンを使用するため、現在悪用のケースを考えられない場合でも、悪用の可能性を防ぐために、アクセストークンをかなり迅速に期限切れにする必要があります。トークンが長ければ長いほど、盗まれる可能性が高くなります。更新トークンは、クライアントIDを保護できない場合に、より長い時間枠で繰り返しアクセスできるため、実際には盗まれるのがはるかに危険です。OAuth2は一般的にリソースへのアクセスを提供できるため、たとえば、APIをクライアントに一時的に公開するために使用できます。リフレッシュトークンを使用すると、使い捨てトークンとは対照的に、大幅に多くのダメージを与えることができます。
実際、クライアント認証は、ダウンロード時に各クライアントに異なるキーを与えるなど、さまざまな方法でより安全にすることができます。これにより、1つのデバイスでトークンをリバースエンジニアリングすると、クライアントのすべてのインスタンスのセキュリティが破壊される一般的な攻撃を防ぐことができます。その他の考えられる手法には、OAuthを使用してサーバーでクライアントを検証し、アクセスする認証サーバーでOAuthプロトコルの2回目の実行を実行することが含まれます。これにより、クライアントが定期的にキーを更新し、すべてのクライアントが異なるキーを持つことができるようになります。たとえば、FacebookやGoogleが所有する認証サーバーが使用するシステムに過度の負担をかけることはありません。
モバイルアプリを使用する場合、クライアントを保護するための手順を実行しなくても、ある種の多目的ベアラートークンを使用するよりも、長期間有効な更新トークンの方が安全です。これは、ユーザーがトークンを期限切れにできないためです。更新トークンが盗まれておらず、ユーザーが単にアクセスを取り消すだけの場合は、これを行うことができます。ユーザーが単にアクセスを取り消したい場合でも、多目的ベアラートークンを取り消すことはできません。多目的データベース参照トークンは明らかに取り消すことができますが、これはプロトコルが設計されているものではないため、OAuthで実行されたセキュリティ分析はこのハイブリッドシステムのセキュリティについて何も述べていません。
結論として、更新トークンとデータベーストークンを使用することをお勧めします。これは、最も安全である可能性が高いためです。クライアントを保護するために何かできることはボーナスですが、これが保護する状況は最小限です。クライアントを保護したい場合は、Google認証システムであるソフトトークンを検討してください。これは、非常に賢い人々による分析に耐えてきた堅実な実装です。