class_docstr: Implementation of ZAP authentication for zmq connections.
  
  Note:
  
  - libzmq provides four levels of security: default NULL (which the Authenticator does
    not see), and authenticated NULL, PLAIN, CURVE, and GSSAPI, which the Authenticator can see.
  - until you add policies, all incoming NULL connections are allowed.
    (classic ZeroMQ behavior), and all PLAIN and CURVE connections are denied.
  - GSSAPI requires no configuration.
code: def __init__(self, context=None, encoding="utf-8", log=None):
      _check_version((4, 0), "security")
      self.context = context or zmq.Context.instance()
      self.encoding = encoding
      self.allow_any = False
      self.credentials_providers = {}
      self.zap_socket = None
      self.whitelist = set()
      self.blacklist = set()
      # passwords is a dict keyed by domain and contains values
      # of dicts with username:password pairs.
      self.passwords = {}
      # certs is dict keyed by domain and contains values
      # of dicts keyed by the public keys from the specified location.
      self.certs = {}
      self.log = log or logging.getLogger("zmq.auth")
  
imports: import logging
  import zmq
  from zmq.utils import z85
  from zmq.utils.strtypes import bytes, unicode, b, u
  from zmq.error import _check_version
  from .certs import load_certificates
label_desc: Use image node_id 1 to create a new Authenticator object from inherited base classes: object with example: obj = Authenticator(context, encoding, log)