@@ -2,10 +2,10 @@ package auth
22
33import (
44 "context"
5+
56 "github.com/Nerzal/gocloak/v12"
67 "github.com/golang-jwt/jwt/v4"
78 "github.com/rs/zerolog/log"
8- "time"
99)
1010
1111type ITokenReceiver interface {
@@ -26,41 +26,41 @@ func NewKeycloakJWTCacheInMemory(keycloakJWTClient ITokenReceiver) *KeycloakJWTC
2626 }
2727}
2828
29- func (k * KeycloakJWTCacheInMemory ) isTokenValid () (bool , error ) {
30- return true , nil
31- parser := jwt .NewParser ()
29+ func (k * KeycloakJWTCacheInMemory ) isTokenValid () bool {
30+ if k .cachedToken == nil {
31+ return false
32+ }
3233
34+ parser := jwt .NewParser ()
3335 claims := & jwt.MapClaims {}
36+
3437 _ , _ , err := parser .ParseUnverified (k .cachedToken .AccessToken , claims )
3538 if err != nil {
36- return false , err
39+ return false
3740 }
3841
39- return claims .VerifyExpiresAt (time .Now ().Unix (), true ), nil
40- }
41-
42- func (k * KeycloakJWTCacheInMemory ) getToken () (* gocloak.JWT , error ) {
43- var token * gocloak.JWT = k .cachedToken
44- tokenIsValid , err := k .isTokenValid ()
42+ err = claims .Valid ()
4543 if err != nil {
46- return nil , err
44+ log .Debug ().Msgf ("Token is invalid: %v" , err )
45+ return false
4746 }
4847
49- log .Info ().Msgf ("tokenIsValid: %v" , tokenIsValid )
48+ return true
49+ }
5050
51- if k .cachedToken == nil || ! tokenIsValid {
52- var err error
53- token , err = k .keycloakJWTClient .getToken ()
54- k .cachedToken = token
55- log .Debug ().Msgf ("updated token: %s" , token .AccessToken )
51+ func (k * KeycloakJWTCacheInMemory ) getToken () (* gocloak.JWT , error ) {
52+ if k .cachedToken == nil || ! k .isTokenValid () {
53+ token , err := k .keycloakJWTClient .getToken ()
5654 if err != nil {
5755 return nil , err
5856 }
57+ k .cachedToken = token
58+ log .Debug ().Msgf ("updated token: %s" , token .AccessToken )
5959 } else {
60- log .Debug ().Msgf ("Using cached token: %s" , token .AccessToken )
60+ log .Debug ().Msgf ("Using cached token: %s" , k . cachedToken .AccessToken )
6161 }
6262
63- return token , nil
63+ return k . cachedToken , nil
6464}
6565
6666func (k * KeycloakJWTCacheInMemory ) GetAccessToken () (string , error ) {
0 commit comments