do not refresh token if refresh token expired

This commit is contained in:
dashevchenko 2024-03-18 12:37:36 +02:00
parent 6d13086a53
commit 0cd0c65a08

View File

@ -56,22 +56,33 @@ public class RefreshTokenExpCheckService {
JsonNode jsonValue = settings.getJsonValue(); JsonNode jsonValue = settings.getJsonValue();
if (OFFICE_365.name().equals(jsonValue.get("providerId").asText()) && jsonValue.has("refreshToken") if (OFFICE_365.name().equals(jsonValue.get("providerId").asText()) && jsonValue.has("refreshToken")
&& jsonValue.has("refreshTokenExpires")) { && jsonValue.has("refreshTokenExpires")) {
long expiresIn = jsonValue.get("refreshTokenExpires").longValue(); try {
if ((expiresIn - System.currentTimeMillis()) < 604800000L) { //less than 7 days long expiresIn = jsonValue.get("refreshTokenExpires").longValue();
log.info("Trying to refresh refresh token."); long tokenLifeDuration = expiresIn - System.currentTimeMillis();
if (tokenLifeDuration < 0) {
((ObjectNode) jsonValue).put("tokenGenerated", false);
((ObjectNode) jsonValue).remove("refreshToken");
((ObjectNode) jsonValue).remove("refreshTokenExpires");
String clientId = jsonValue.get("clientId").asText(); adminSettingsService.saveAdminSettings(TenantId.SYS_TENANT_ID, settings);
String clientSecret = jsonValue.get("clientSecret").asText(); } else if (tokenLifeDuration < 604800000L) { //less than 7 days
String refreshToken = jsonValue.get("refreshToken").asText(); log.info("Trying to refresh refresh token.");
String tokenUri = jsonValue.get("tokenUri").asText();
TokenResponse tokenResponse = new RefreshTokenRequest(new NetHttpTransport(), new GsonFactory(), String clientId = jsonValue.get("clientId").asText();
new GenericUrl(tokenUri), refreshToken) String clientSecret = jsonValue.get("clientSecret").asText();
.setClientAuthentication(new ClientParametersAuthentication(clientId, clientSecret)) String refreshToken = jsonValue.get("refreshToken").asText();
.execute(); String tokenUri = jsonValue.get("tokenUri").asText();
((ObjectNode) jsonValue).put("refreshToken", tokenResponse.getRefreshToken());
((ObjectNode) jsonValue).put("refreshTokenExpires", Instant.now().plus(Duration.ofDays(AZURE_DEFAULT_REFRESH_TOKEN_LIFETIME_IN_DAYS)).toEpochMilli()); TokenResponse tokenResponse = new RefreshTokenRequest(new NetHttpTransport(), new GsonFactory(),
adminSettingsService.saveAdminSettings(TenantId.SYS_TENANT_ID, settings); new GenericUrl(tokenUri), refreshToken)
.setClientAuthentication(new ClientParametersAuthentication(clientId, clientSecret))
.execute();
((ObjectNode) jsonValue).put("refreshToken", tokenResponse.getRefreshToken());
((ObjectNode) jsonValue).put("refreshTokenExpires", Instant.now().plus(Duration.ofDays(AZURE_DEFAULT_REFRESH_TOKEN_LIFETIME_IN_DAYS)).toEpochMilli());
adminSettingsService.saveAdminSettings(TenantId.SYS_TENANT_ID, settings);
}
} catch (Exception e) {
log.error("Error occurred while checking token", e);
} }
} }
} }