rsanchez
2015-09-24 94c288b4f8d353c44b64e40c0863c7fce6782293
securis/src/main/java/net/curisit/securis/utils/TokenHelper.java
....@@ -11,6 +11,7 @@
1111 import javax.inject.Inject;
1212
1313 import net.curisit.integrity.commons.Utils;
14
+import net.curisit.securis.services.ApiResource;
1415
1516 import org.apache.commons.lang3.StringUtils;
1617 import org.apache.logging.log4j.LogManager;
....@@ -42,8 +43,12 @@
4243 * @return
4344 */
4445 public String generateToken(String user) {
46
+
47
+ return generateToken(user, new Date());
48
+ }
49
+
50
+ public String generateToken(String user, Date date) {
4551 try {
46
- Date date = new Date();
4752 String secret = generateSecret(user, date);
4853 StringBuffer sb = new StringBuffer();
4954 sb.append(secret);
....@@ -58,7 +63,6 @@
5863 LOG.error("Error generating SHA-256 hash", e);
5964 }
6065 return null;
61
-
6266 }
6367
6468 private String generateSecret(String user, Date date) throws UnsupportedEncodingException, NoSuchAlgorithmException {
....@@ -90,9 +94,11 @@
9094 String secret = parts[0];
9195 String user = parts[1];
9296 Date date = Utils.toDateFromIso(parts[2]);
93
- if (new Date().after(new Date(date.getTime() + VALID_TOKEN_PERIOD * 60 * 60 * 1000))) {
94
- return false;
95
- }
97
+ if (date.getTime() > 0 || !user.equals(ApiResource.API_CLIENT_USERNAME)) {
98
+ if (new Date().after(new Date(date.getTime() + VALID_TOKEN_PERIOD * 60 * 60 * 1000))) {
99
+ return false;
100
+ }
101
+ } // else: It's a securis-client API call
96102 String newSecret = generateSecret(user, date);
97103 return newSecret.equals(secret);
98104 } catch (IOException e) {
....@@ -136,4 +142,10 @@
136142 return null;
137143 }
138144
145
+ public static void main(String[] args) {
146
+ // client token:
147
+ // OTk3ODRiMzY5NzQ5MWI5NmYyZGQyODRiYjY2ZTU2YzdmMTZjYzM3YTY3N2ExM2M3ODI2MjU5ZTMzOTIyYjUzNSBfY2xpZW50IDE5NzAtMDEtMDFUMDA6NTk6NTkuOTk5KzAxMDA=
148
+ // OTk3ODRiMzY5NzQ5MWI5NmYyZGQyODRiYjY2ZTU2YzdmMTZjYzM3YTY3N2ExM2M3ODI2MjU5ZTMzOTIyYjUzNSBfY2xpZW50IDE5NzAtMDEtMDFUMDA6NTk6NTkuOTk5KzAxMDA=
149
+ System.out.print("client token: " + new TokenHelper().generateToken("_client", new Date(-1)));
150
+ }
139151 }