1

リフレッシュ トークンに関する質問があります。次のように、Identity Server で Angular クライアントを構成しました。

RefreshTokenUsage = TokenUsage.OneTimeOnly,
AccessTokenLifetime = 30,
AbsoluteRefreshTokenLifetime = 3600,
RefreshTokenExpiration = TokenExpiration.Sliding,
SlidingRefreshTokenLifetime = 60,

また、Angular クライアントは「サイレント更新」メカニズムを使用します (angular-auth-oidc-client を使用)。

Angular クライアントが起動すると、20 秒後に「サイレント更新」が開始され、新しいアクセス トークンが要求されます。これは、30 秒のアクセス トークンの有効期間の約 75% であるため、理にかなっています)。新しいアクセス トークンを取得し、すべてが機能し続けます。

ある時点で、サイレント更新を停止します。これは、アクセス トークンが更新されなくなったことを意味します。実際、しばらくすると、アクセス トークンの有効期限が切れたため、Web API への呼び出しが失敗します。

さて、数分後、「サイレント更新」を再開します。

奇妙なことに、新しいアクセス トークンの取得に成功していますが、リフレッシュ トークンは 60 秒後に期限切れになるはずなので、これはもう機能しないはずだと理解していましたか?

おそらく、このスライディング リフレッシュ トークン メカニズムがどのように機能するかを誤解している..期限切れのリフレッシュ トークンを使用して新しいアクセス トークンをリクエストできる理由を誰か説明できますか?

4

1 に答える 1