class_docstr: Signs and verifies JWT Token. Used to authorise and verify requests.
  
  :param secret_key: key used to sign the request
  :param expiration_time_in_seconds: time after which the token becomes invalid (in seconds)
  :param audience: audience that the request is expected to have
  :param leeway_in_seconds: leeway that allows for a small clock skew between the two parties
  :param algorithm: algorithm used for signing
code: def verify_token(self, token: str) -> dict[str, Any]:
      payload = jwt.decode(
          token,
          self._secret_key,
          leeway=timedelta(seconds=self._leeway_in_seconds),
          algorithms=[self._algorithm],
          options={
              "verify_signature": True,
              "require": ["exp", "iat", "nbf"],
          },
          audience=self._audience,
      )
      return payload
  
imports: from __future__ import annotations
  from datetime import datetime, timedelta
  from typing import Any
  import jwt
label_desc: Use image node_id 3 for calling the JWTSigner obj's underlying member method code with example usage: obj.verify_token(token) and returns: payload