<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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