pomerium/internal/identity/oauth
backport-actions-token[bot] 35ef3274de
identity: override TokenSource expiry behavior (#4634)
identity: override TokenSource expiry behavior (#4632)

The current session refresh loop attempts to refresh access tokens when
they are due to expire in less than one minute. However, the code to
perform the refresh relies on a TokenSource from the x/oauth2 package,
which has its own internal 'expiryDelta' threshold, with a default of
10 seconds. As a result, the first four or five attempts to refresh a
particular access token will not actually refresh the token. The refresh
will happen only when the access token is within 10 seconds of expiring.

Instead, before we obtain a new TokenSource, first clear any existing
access token. This causes the TokenSource to consider the token invalid,
triggering a refresh. This should give the refresh loop more control
over when refreshes happen.

Consolidate this logic in a new Refresh() method in the oidc package.
Add unit tests for this new method.

Co-authored-by: Kenneth Jenkins <51246568+kenjenkins@users.noreply.github.com>
2023-10-24 09:58:47 -07:00
..
apple identity: override TokenSource expiry behavior (#4634) 2023-10-24 09:58:47 -07:00
github core/authenticate: refactor idp sign out (#4589) 2023-09-28 08:52:22 -07:00
options.go move directory providers (#3633) 2022-11-03 11:33:56 -06:00