Skip to content
This repository was archived by the owner on Apr 10, 2025. It is now read-only.

Commit 294be0e

Browse files
authored
Fix posix time generation to UTC/GMT time zone (#30)
1 parent 6a3d47c commit 294be0e

File tree

2 files changed

+19
-6
lines changed

2 files changed

+19
-6
lines changed

GeneXusJWT/src/main/java/com/genexus/JWT/claims/RegisteredClaim.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.genexus.JWT.claims;
22

3+
import java.text.DateFormat;
34
import java.text.SimpleDateFormat;
45
import java.util.Date;
6+
import java.util.TimeZone;
57

68
import com.auth0.jwt.JWTCreator.Builder;
79
import com.auth0.jwt.interfaces.Verification;
@@ -94,6 +96,7 @@ public static Verification getVerificationWithClaim(String registeredClaimKey, S
9496

9597
public static Verification getVerificationWithClaim(RegisteredClaim registeredClaimKey, String registeredClaimValue,
9698
long registeredClaimCustomTime, Verification verification, Error error) {
99+
97100
switch (registeredClaimKey) {
98101
case iss:
99102
verification.withIssuer(registeredClaimValue);
@@ -141,7 +144,10 @@ public static Builder getBuilderWithClaim(String registeredClaimKey, String regi
141144

142145
public static Builder getBuilderWithClaim(RegisteredClaim registeredClaimKey, String registeredClaimValue,
143146
Builder tokenBuilder, Error error) {
147+
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
148+
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
144149
switch (registeredClaimKey) {
150+
145151
case iss:
146152
try {
147153
tokenBuilder.withIssuer(registeredClaimValue);
@@ -153,13 +159,17 @@ public static Builder getBuilderWithClaim(RegisteredClaim registeredClaimKey, St
153159

154160
case exp:
155161
Date date = null;
162+
156163
try {
157-
date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").parse(registeredClaimValue);
164+
165+
date = dateFormat.parse(registeredClaimValue);
166+
158167
} catch (Exception e) {
159168
error.setError("RC004", "Date format error; expected yyyy/MM/dd HH:mm:ss");
160169
return null;
161170
}
162171
try {
172+
163173
tokenBuilder.withExpiresAt(date);
164174
} catch (Exception e) {
165175
error.setError("RC005", e.getMessage());
@@ -186,7 +196,7 @@ public static Builder getBuilderWithClaim(RegisteredClaim registeredClaimKey, St
186196
case nbf:
187197
Date dateNbf = null;
188198
try {
189-
dateNbf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").parse(registeredClaimValue);
199+
dateNbf = dateFormat.parse(registeredClaimValue);
190200
} catch (Exception e) {
191201
error.setError("RC008", "Date format error; expected yyyy/MM/dd HH:mm:ss");
192202
return null;
@@ -201,7 +211,7 @@ public static Builder getBuilderWithClaim(RegisteredClaim registeredClaimKey, St
201211
case iat:
202212
Date dateIat = null;
203213
try {
204-
dateIat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").parse(registeredClaimValue);
214+
dateIat = dateFormat.parse(registeredClaimValue);
205215
} catch (Exception e) {
206216
error.setError("RC010", "Date format error; expected yyyy/MM/dd HH:mm:ss");
207217
return null;

GeneXusJWT/src/main/java/com/genexus/JWT/utils/DateUtil.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.genexus.JWT.utils;
22

33
import java.time.LocalDateTime;
4+
import java.time.ZoneOffset;
45
import java.time.format.DateTimeFormatter;
56

67
import com.genexus.commons.DateUtilObject;
@@ -19,7 +20,9 @@ public final class DateUtil extends DateUtilObject {
1920
@Deprecated
2021
public String getCurrentDate() {
2122
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
22-
LocalDateTime now = LocalDateTime.now();
23+
24+
LocalDateTime now = LocalDateTime.now(ZoneOffset.UTC);
25+
2326
return dtf.format(now);
2427
}
2528

@@ -31,7 +34,7 @@ public String getCurrentDate() {
3134
@Deprecated
3235
public String currentPlusSeconds(long seconds) {
3336
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
34-
LocalDateTime now = LocalDateTime.now();
37+
LocalDateTime now = LocalDateTime.now(ZoneOffset.UTC);
3538
LocalDateTime aux = now.plusSeconds(seconds);
3639
return dtf.format(aux);
3740
}
@@ -44,7 +47,7 @@ public String currentPlusSeconds(long seconds) {
4447
@Deprecated
4548
public String currentMinusSeconds(long seconds) {
4649
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
47-
LocalDateTime now = LocalDateTime.now();
50+
LocalDateTime now = LocalDateTime.now(ZoneOffset.UTC);
4851
LocalDateTime aux = now.minusSeconds(seconds);
4952
return dtf.format(aux);
5053
}

0 commit comments

Comments
 (0)