private function authenticate(Login $login)
    {
        foreach ($this->userProviders as $name => $provider) {
            try {
                /* @var AbstractUser $user */
                $user = $provider->getUser($login);
                if ($user && $user->authenticate($login, $this)) {
                    $user->setUserProviderName($name);
                    $user->setAuthProviderName($login->getAuthProviderName());
                    $this->getToken()->setRememberMe($login->getRememberMe())->saveUser($user);

                    return $user;
                }
            } catch (\Exception $e) {
                // next user provider
            }
        }

        return false;
    }