RESTモバイルアプリケーション用のAPIを保護する場合、頻繁に表示されるのは更新トークンの使用です。これらは次の理由で存在します。
更新トークンは、有効期限のない取り消し可能なトークンであり、新しいトークンが期限切れになったときに新しいアクセストークンを取得するために使用できます。 こちら を参照してください。
すべてのAPI呼び出しで、(有効な)アクセストークンが送信されます。有効期限が切れたら、「特別なキー」(更新トークン)を使用して、有効期限が切れていない別のアクセストークンを取得します。
この広く使用されているパターンは、有効期限のないアクセストークンを発行してデバイスに保存するのとは異なり、リフレッシュトークンを保存するのと同じように劣っていますか?
PS:これに対するあなたの答えが各リクエストで有効期限のないトークンを送信することは安全性が低いということである場合(中間者)、私は主張します:それは本当にあなたのAPIがHTTPSを介しているときですか? (それに加えて、doとにかく同じネットワークで有効期限のないトークンを送信します。これを単に「リフレッシュトークン」と呼び、送信頻度を下げます)。
PS2:回答がリフレッシュトークンを取り消す機能に関連している場合、アクセストークンも取り消すことができると私は主張できます。
たとえばJWTトークンを使用する場合、トークンは自己署名されます。
これは、resource service
がauthentication server
と通信しなくてもトークンの整合性を検証できることを意味します。短命のaccess tokens
を使用しても問題ありません。
しかし、refresh token
を使用してaccess token
から新しいauthentication server
を取得する場合、authentication server
は、セッションが取り消されるか、ユーザーのアカウントがまだ存在し、まだアクティブであり、新しいresource service
を発行するaccess token
にアクセスする権限を持っている場合。
その場合、更新トークンとアクセストークンを使用すると、有効期間が短いアクセストークンに対してより単純な検証メカニズムを実装でき、リソースサーバーからの応答が速くなります。