17

https://stackoverflow.com/a/7209263/1225328から:

リフレッシュ トークンの考え方は、アクセス トークンが侵害された場合、有効期間が短いため、攻撃者がそれを悪用できる期間が限られているというものです。

わかりましたが、攻撃者が更新トークンにアクセスすると、新しい認証トークンを取得できるようになります。間違っていますか? これは、長寿命のトークンのセキュリティ上の欠陥を延期するだけのようです...

この点に関しては、同じ回答で次のことがわかります。

攻撃者はアクセス トークンを取得するために、更新トークンに加えてクライアント ID とシークレットを必要とするため、侵害された場合、更新トークンは役に立ちません。

それでは、更新トークンを使用することと、単にサインインすることの違いは何ですか? また、ユーザーが再入力する必要がないようにするには、クライアント ID とシークレットをどのように保存しますか?


@FStephenQが指摘したように、更新トークンは 1回しか使用できません。その後、攻撃者は新しい認証トークンを取得できますが、1 回だけであり、有効期間は短いです。では、既に使用したリフレッシュ トークンを取得するにはどうすればよいでしょうか。トークンを使用するときに新しいトークンを取得すると、攻撃者も自分のトークンを更新できます...


実際の問題は、ユーザーのサインインを維持するにはどうすればよいかということです。私が使用しているアプリでは、一度サインインすると、再度サインインする必要はありません。

4

1 に答える 1

15

リフレッシュ トークンは 1 回だけリフレッシュに使用でき、クライアントのアクセス トークンの有効期限が切れたときにのみ認証サーバーに送信されます。リフレッシュ トークンが使用されると、認証サーバーは新しい認証トークンを返し、オプションで新しいリフレッシュ トークンを返します。アイデアは、ユーザーに再度ログインを強制することなく、有効なクライアントが再認証できるようにしながら、有効期間の短いアクセス トークンの使用を許可することです。

更新トークンが盗まれた場合、攻撃者はそれを 1 回使用して有効なアクセス トークンを取得できます。クライアントがトークンを更新しようとすると、更新トークンが古くなるため、拒否されます。次に、ユーザーに再度ログインするように要求し、認証サーバーは新しいアクセス トークンと更新トークンをユーザーに提供し、盗まれたトークンは無効になります。

于 2015-10-02T16:44:42.960 に答える