code: def __init__(self, api_token, backend_client, ssl_verify, proxies):
      super(NeptuneAuthenticator, self).__init__(host="")
  
      # We need to pass a lambda to be able to re-create fresh session at any time when needed
      def session_factory():
          try:
              auth_tokens = (
                  backend_client.api.exchangeApiToken(
                      X_Neptune_Api_Token=api_token
                  )
                  .response()
                  .result
              )
          except HTTPUnauthorized:
              raise NeptuneInvalidApiTokenException()
  
          decoded_json_token = jwt.decode(
              auth_tokens.accessToken, options=_decoding_options
          )
          expires_at = decoded_json_token.get("exp")
          client_name = decoded_json_token.get("azp")
          refresh_url = (
              "{realm_url}/protocol/openid-connect/token".format(
                  realm_url=decoded_json_token.get("iss")
              )
          )
          token = {
              "access_token": auth_tokens.accessToken,
              "refresh_token": auth_tokens.refreshToken,
              "expires_in": expires_at - time.time(),
          }
  
          session = OAuth2Session(
              client_id=client_name,
              token=token,
              auto_refresh_url=refresh_url,
              auto_refresh_kwargs={"client_id": client_name},
              token_updater=_no_token_updater,
          )
          session.verify = ssl_verify
  
          update_session_proxies(session, proxies)
          return session
  
      self.auth = NeptuneAuth(session_factory)
  
imports: import threading
  import time
  import jwt
  from bravado.exception import HTTPUnauthorized
  from bravado.requests_client import Authenticator
  from oauthlib.oauth2 import OAuth2Error, TokenExpiredError
  from requests.auth import AuthBase
  from requests_oauthlib import OAuth2Session
  from neptune.common.backends.utils import with_api_exceptions_handler
  from neptune.common.exceptions import NeptuneInvalidApiTokenException
  from neptune.common.utils import update_session_proxies
label_desc: Use image node_id 1 to create a new NeptuneAuthenticator object from inherited base classes: Authenticator with example: obj = NeptuneAuthenticator(api_token, backend_client, ssl_verify, proxies)