def METHOD_NAME(self, *scopes: str, **kwargs: Any) -> AccessToken:
    app: msal.ConfidentialClientApplication = self._get_app(**kwargs)
    request_time = int(time.time())
    result = app.acquire_token_on_behalf_of(self._assertion, list(scopes), claims_challenge=kwargs.get("claims"))
    if "access_token" not in result or "expires_in" not in result:
        message = "Authentication failed: {}".format(result.get("error_description") or result.get("error"))
        response = self._client.get_error_response(result)
        raise ClientAuthenticationError(message=message, response=response)
    try:
        self._auth_record = _build_auth_record(result)
    except ClientAuthenticationError:
        pass  # non-fatal; we'll use the assertion again next time instead of a refresh token
    return AccessToken(result["access_token"], request_time + int(result["expires_in"]))