fix reused token within grace still throwing
This commit is contained in:
@@ -89,12 +89,9 @@ public class TokenService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Reuse Check
|
// Reuse Check
|
||||||
if (refreshToken.getUsedAt() != null) {
|
if (refreshToken.getUsedAt() != null && now.isAfter(refreshToken.getUsedAt().plus(refreshGracePeriod))) {
|
||||||
if (now.isAfter(refreshToken.getUsedAt().plus(refreshGracePeriod))) {
|
tokenFamily.setRevokedAt(now);
|
||||||
tokenFamily.setRevokedAt(Instant.now());
|
tokenFamilyRepository.save(tokenFamily);
|
||||||
tokenFamilyRepository.save(tokenFamily);
|
|
||||||
}
|
|
||||||
|
|
||||||
throw new NotAuthenticated("Refresh token already being used");
|
throw new NotAuthenticated("Refresh token already being used");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -106,9 +103,11 @@ public class TokenService {
|
|||||||
throw new NotAuthenticated("Refresh token or family expired");
|
throw new NotAuthenticated("Refresh token or family expired");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Rotate
|
// Invalidate old token, unless we're within the grace period, otherwise the grace gets extended
|
||||||
refreshToken.setUsedAt(now);
|
if (refreshToken.getUsedAt() == null) {
|
||||||
refreshTokenRepository.save(refreshToken);
|
refreshToken.setUsedAt(now);
|
||||||
|
refreshTokenRepository.save(refreshToken);
|
||||||
|
}
|
||||||
|
|
||||||
byte[] newRawToken = generateRandomBytes(32);
|
byte[] newRawToken = generateRandomBytes(32);
|
||||||
createRefreshToken(
|
createRefreshToken(
|
||||||
|
|||||||
Reference in New Issue
Block a user