From bd15a1def6056ee82eeb438494415749f36df468 Mon Sep 17 00:00:00 2001 From: Roxana Meixner Date: Sun, 3 Nov 2024 19:08:22 +0100 Subject: [PATCH] add: add ClearClientAccessToken method to KeycloakJWTReceiverCachedInMemory --- client/keycloakJWTReceiverCachedInMemory.go | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/client/keycloakJWTReceiverCachedInMemory.go b/client/keycloakJWTReceiverCachedInMemory.go index 3d68997..e635dae 100644 --- a/client/keycloakJWTReceiverCachedInMemory.go +++ b/client/keycloakJWTReceiverCachedInMemory.go @@ -25,15 +25,15 @@ func NewKeycloakJWTReceiverCachedInMemory(keycloakRepository IKeycloakRepository } } -func isTokenValid(token *gocloak.JWT) bool { - if token == nil { +func (k *KeycloakJWTReceiverCachedInMemory) isTokenValid() bool { + if k.cachedToken == nil { return false } parser := jwt.NewParser() claims := &jwt.MapClaims{} - _, _, err := parser.ParseUnverified(token.AccessToken, claims) + _, _, err := parser.ParseUnverified(k.cachedToken.AccessToken, claims) if err != nil { log.Error().Msgf("couldn't parse JWT access token: %v", err) return false @@ -55,7 +55,7 @@ func (k *KeycloakJWTReceiverCachedInMemory) getClientToken(clientName, clientSec k.mutex.Lock() defer k.mutex.Unlock() - if k.cachedToken == nil || !isTokenValid(k.cachedToken) { + if !k.isTokenValid() { token, err := k.keycloakRepository.getClientToken(clientName, clientSecret) if err != nil { return nil, fmt.Errorf("couldn't fetch JWT access token: %w", err) @@ -74,3 +74,10 @@ func (k *KeycloakJWTReceiverCachedInMemory) GetClientAccessToken(clientName, cli return token.AccessToken, nil } + +func (k *KeycloakJWTReceiverCachedInMemory) ClearClientAccessToken() { + k.mutex.Lock() + defer k.mutex.Unlock() + + k.cachedToken = nil +}