Skip to content

Commit a9531a5

Browse files
committed
add new token generation logic
1 parent 46cda88 commit a9531a5

2 files changed

Lines changed: 34 additions & 0 deletions

File tree

src/main/java/org/mskcc/cbio/oncokb/domain/TokenKey.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
package org.mskcc.cbio.oncokb.domain;
22

33
import java.io.Serializable;
4+
import java.nio.ByteBuffer;
5+
import java.security.SecureRandom;
6+
import java.util.zip.CRC32;
47

58
import org.mskcc.cbio.oncokb.domain.enumeration.TokenType;
69

10+
import io.seruco.encoding.base62.Base62;
11+
712
public class TokenKey implements Serializable {
813
public static int TOKEN_CHAR_LENGTH = 30;
914

@@ -15,6 +20,32 @@ public class TokenKey implements Serializable {
1520

1621
private String checksum;
1722

23+
public static TokenKey generate(TokenType type) {
24+
TokenKey tokenKey = new TokenKey();
25+
tokenKey.setTokenType(type);
26+
27+
Base62 base62 = Base62.createInstance();
28+
SecureRandom secureRandom = new SecureRandom();
29+
30+
byte[] bytes = new byte[24];
31+
secureRandom.nextBytes(bytes);
32+
String token = new String(base62.encode(bytes));
33+
tokenKey.setToken(token);
34+
35+
CRC32 crc32 = new CRC32();
36+
crc32.update(bytes);
37+
ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
38+
buffer.putLong(crc32.getValue());
39+
String checksum = new String(base62.encode(buffer.array()));
40+
tokenKey.setChecksum(checksum.substring(checksum.length() - TokenKey.CHECKSUM_CHAR_LENGTH));
41+
42+
return tokenKey;
43+
}
44+
45+
public boolean validateChecksum() {
46+
return false;
47+
}
48+
1849
public TokenType getTokenType() {
1950
return tokenType;
2051
}

src/main/java/org/mskcc/cbio/oncokb/security/uuid/TokenProvider.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import org.mskcc.cbio.oncokb.domain.Authority;
44
import org.mskcc.cbio.oncokb.domain.Token;
5+
import org.mskcc.cbio.oncokb.domain.TokenKey;
56
import org.mskcc.cbio.oncokb.domain.User;
7+
import org.mskcc.cbio.oncokb.domain.enumeration.TokenType;
68
import org.mskcc.cbio.oncokb.repository.UserRepository;
79
import org.mskcc.cbio.oncokb.security.AuthoritiesConstants;
810
import org.mskcc.cbio.oncokb.security.SecurityUtils;
@@ -74,6 +76,7 @@ private Token getNewToken(Set<Authority> authorities, Optional<Instant> definedE
7476
token.setExpiration(expirationTime);
7577
}
7678
token.setToken(UUID.randomUUID());
79+
token.setNewToken(TokenKey.generate(TokenType.USER));
7780
return token;
7881
}
7982

0 commit comments

Comments
 (0)