5
5
import java .time .Instant ;
6
6
import java .util .Date ;
7
7
import java .util .Map ;
8
+ import java .util .UUID ;
8
9
import java .util .function .Supplier ;
9
10
10
11
import org .springframework .core .env .Environment ;
@@ -34,12 +35,12 @@ public class KumiteTokenService {
34
35
public static final String KEY_ACCESSTOKEN_EXP = "kumite.login.oauth2_exp" ;
35
36
36
37
final Environment env ;
37
- final IUuidGenerator uuidgenerator ;
38
+ final IUuidGenerator uuidGenerator ;
38
39
final Supplier <OctetSequenceKey > supplierSymetricKey ;
39
40
40
41
public KumiteTokenService (Environment env , IUuidGenerator uuidgenerator ) {
41
42
this .env = env ;
42
- this .uuidgenerator = uuidgenerator ;
43
+ this .uuidGenerator = uuidgenerator ;
43
44
this .supplierSymetricKey = () -> loadSigningJwk ();
44
45
}
45
46
@@ -48,9 +49,9 @@ private OctetSequenceKey loadSigningJwk() {
48
49
return OctetSequenceKey .parse (env .getRequiredProperty (KEY_JWT_SIGNINGKEY ));
49
50
}
50
51
51
- public Map <String , ?> wrapInJwtToken (KumiteUser user ) {
52
- String accessToken = generateAccessToken (user );
53
- return Map .of ("access_token" , accessToken );
52
+ public Map <String , ?> wrapInJwtToken (KumiteUser user , UUID playerId ) {
53
+ String accessToken = generateAccessToken (user , playerId );
54
+ return Map .of ("access_token" , accessToken , "player_id" , playerId );
54
55
}
55
56
56
57
public static void main (String [] args ) {
@@ -82,13 +83,14 @@ static JWK generateSignatureSecret(IUuidGenerator uuidgenerator) {
82
83
*
83
84
* @param user
84
85
* The user for whom to generate an access token.
86
+ * @param playerId
85
87
* @throws IllegalArgumentException
86
88
* if provided argument is <code>null</code>.
87
89
* @return The generated JWT access token.
88
90
* @throws IllegalStateException
89
91
*/
90
92
@ SneakyThrows ({ JOSEException .class })
91
- public String generateAccessToken (KumiteUser user ) {
93
+ public String generateAccessToken (KumiteUser user , UUID playerId ) {
92
94
Duration accessTokenValidity = Duration .parse (env .getProperty (KEY_ACCESSTOKEN_EXP , "PT1H" ));
93
95
94
96
if (accessTokenValidity .compareTo (Duration .parse ("PT1H" )) > 0 ) {
@@ -109,11 +111,11 @@ public String generateAccessToken(KumiteUser user) {
109
111
JWTClaimsSet .Builder claimsSetBuilder = new JWTClaimsSet .Builder ().subject (user .getAccountId ().toString ())
110
112
.audience ("Kumite-Server" )
111
113
.issuer ("https://kumite.com" )
112
- .jwtID (uuidgenerator .randomUUID ().toString ())
114
+ .jwtID (uuidGenerator .randomUUID ().toString ())
113
115
.issueTime (curDate )
114
116
.notBeforeTime (Date .from (Instant .now ()))
115
117
.expirationTime (Date .from (Instant .now ().plusMillis (expirationMs )))
116
- .claim ("mainPlayerId " , user . getPlayerId () .toString ());
118
+ .claim ("playerId " , playerId .toString ());
117
119
118
120
SignedJWT signedJWT = new SignedJWT (headerBuilder .build (), claimsSetBuilder .build ());
119
121
0 commit comments