docs: def client_authentication(self, request, auth=None, **kwargs):
          """
          Deal with client authentication
  
          :param request: The refresh access token request
          :param auth: Client authentication information
          :param kwargs: Extra keyword arguments
          :return: dictionary containing client id, client authentication method
              and possibly access token.
          """
  
          try:
              auth_info = verify_client(self.endpoint_context, request, auth)
          except Exception as err:
              msg = "Failed to verify client due to: {}".format(err)
              logger.error(msg)
              return self.error_cls(error="unauthorized_client",
                                    error_description=msg)
          else:
              if 'client_id' not in auth_info:
                  logger.error('No client_id, authentication failed')
                  return self.error_cls(error="unauthorized_client",
                                        error_description='unknown client')
  
          return auth_info