code: def jwt_decode_handler(token):
      
      jwt_issuer = get_first_jwt_issuer()
      _verify_jwt_signature(token, jwt_issuer)
      decoded_token = _decode_and_verify_token(token, jwt_issuer)
      return _set_token_defaults(decoded_token)
docs: Decodes a JSON Web Token (JWT).
  
      Notes:
          * Requires "exp" and "iat" claims to be present in the token's payload.
          * Aids debugging by logging InvalidTokenError log entries when decoding fails.
  
      Examples:
          Use with `djangorestframework-jwt <https://getblimp.github.io/django-rest-framework-jwt/>`_, by changing
          your Django settings:
  
          .. code-block:: python
  
              JWT_AUTH = {
                  'JWT_DECODE_HANDLER': 'edx_rest_framework_extensions.auth.jwt.decoder.jwt_decode_handler',
                  'JWT_ISSUER': 'https://the.jwt.issuer',
                  'JWT_SECRET_KEY': 'the-jwt-secret-key',  (defaults to settings.SECRET_KEY)
                  'JWT_AUDIENCE': 'the-jwt-audience',
                  'JWT_PUBLIC_SIGNING_JWK_SET': 'the-jwk-set-of-public-signing-keys',
              }
  
      Args:
          token (str): JWT to be decoded.
  
      Returns:
          dict: Decoded JWT payload.
  
      Raises:
          MissingRequiredClaimError: Either the exp or iat claims is missing from the JWT payload.
          InvalidTokenError: Decoding fails.