async def METHOD_NAME(self, action_id: str, message: str, icon_name: str,
                               details: Dict[str, str], cookie: str, identities: Sequence[Identity]) -> None:
    logger.debug('BeginAuthentication: action %s, message "%s", icon %s, details %s, cookie %s, identities %r',
                 action_id, message, icon_name, details, cookie, identities)
    # only support authentication as ourselves, as we don't yet have the
    # protocol plumbing and UI to select an admin user
    my_uid = os.geteuid()
    for (auth_type, subject) in identities:
        if auth_type == 'unix-user' and 'uid' in subject and subject['uid'].value == my_uid:
            logger.debug('Authentication subject %s matches our uid %d', subject, my_uid)
            break
    else:
        logger.warning('Not supporting authentication as any of %s', identities)
        return
    user_name = pwd.getpwuid(my_uid).pw_name
    process = await asyncio.create_subprocess_exec(HELPER_PATH, user_name, cookie,
                                                   stdin=asyncio.subprocess.PIPE,
                                                   stdout=asyncio.subprocess.PIPE)
    try:
        await self._communicate(process)
    except asyncio.CancelledError:
        logger.debug('Cancelled authentication')
        process.terminate()
    finally:
        res = await process.wait()
        logger.debug('helper exited with code %i', res)