Skip to content

Commit 4c7c66e

Browse files
committed
fix: make local setup work, fix client name and token validity check
1 parent aa11d05 commit 4c7c66e

File tree

1 file changed

+20
-20
lines changed

1 file changed

+20
-20
lines changed

auth/keycloakJWTClient.go

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ package auth
22

33
import (
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

1111
type 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

6666
func (k *KeycloakJWTCacheInMemory) GetAccessToken() (string, error) {

0 commit comments

Comments
 (0)