リフレッシュ トークンに関する質問があります。次のように、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 秒後に期限切れになるはずなので、これはもう機能しないはずだと理解していましたか?
おそらく、このスライディング リフレッシュ トークン メカニズムがどのように機能するかを誤解している..期限切れのリフレッシュ トークンを使用して新しいアクセス トークンをリクエストできる理由を誰か説明できますか?