Introduce simple refresh strategy

This commit is contained in:
René Pfeuffer
2018-11-30 11:18:37 +01:00
parent 176d121aa0
commit 205ca42e09
3 changed files with 95 additions and 2 deletions

View File

@@ -0,0 +1,25 @@
package sonia.scm.security;
import java.time.Clock;
public class PercentageJwtAccessTokenRefreshStrategy implements JwtAccessTokenRefreshStrategy {
private final Clock clock;
private final float refreshPercentage;
public PercentageJwtAccessTokenRefreshStrategy(float refreshPercentage) {
this(Clock.systemDefaultZone(), refreshPercentage);
}
PercentageJwtAccessTokenRefreshStrategy(Clock clock, float refreshPercentage) {
this.clock = clock;
this.refreshPercentage = refreshPercentage;
}
@Override
public boolean shouldBeRefreshed(JwtAccessToken oldToken) {
long liveSpan = oldToken.getExpiration().getTime() - oldToken.getIssuedAt().getTime();
long age = clock.instant().toEpochMilli() - oldToken.getIssuedAt().getTime();
return age/liveSpan > refreshPercentage;
}
}