diff --git a/src/keycloak/keycloak_openid.py b/src/keycloak/keycloak_openid.py index cb597eb..e080e8a 100644 --- a/src/keycloak/keycloak_openid.py +++ b/src/keycloak/keycloak_openid.py @@ -596,6 +596,11 @@ class KeycloakOpenID: full_jwt.token.objects["valid"] = True return json.loads(full_jwt.token.payload.decode("utf-8")) + @staticmethod + def _public_key_to_jwk(key: str) -> jwk.JWK: + key = "-----BEGIN PUBLIC KEY-----\n" + key + "\n-----END PUBLIC KEY-----" + return jwk.JWK.from_pem(key.encode("utf-8")) + def decode_token(self, token, validate: bool = True, **kwargs): """Decode user token. @@ -620,8 +625,7 @@ class KeycloakOpenID: """ key = kwargs.pop("key", None) if validate and key is None: - key = "-----BEGIN PUBLIC KEY-----\n" + self.public_key() + "\n-----END PUBLIC KEY-----" - key = jwk.JWK.from_pem(key.encode("utf-8")) + key = self._public_key_to_jwk(self.public_key()) return self._verify_token(token, key, **kwargs) @@ -1257,12 +1261,7 @@ class KeycloakOpenID: """ key = kwargs.pop("key", None) if validate and key is None: - key = ( - "-----BEGIN PUBLIC KEY-----\n" - + await self.a_public_key() - + "\n-----END PUBLIC KEY-----" - ) - key = jwk.JWK.from_pem(key.encode("utf-8")) + key = self._public_key_to_jwk(await self.a_public_key()) return self._verify_token(token, key, **kwargs)