public function authenticate(TokenInterface $token)
 {
     $user = new User($token->getUsername(), null, array('ROLE_USER'));
     $casProviderEvent = new CasProviderEvent($user);
     $this->eventDispatcher->dispatch('cas.security.provider', $casProviderEvent);
     if ($casProviderEvent->isPropagationStopped()) {
         if ($casProviderEvent->hasAuthenticationException()) {
             throw $casProviderEvent->getAuthenticationException();
         }
     }
     $authenticatedToken = new CasUserToken($casProviderEvent->getUser()->getRoles());
     $authenticatedToken->setUser($casProviderEvent->getUser());
     $authenticatedToken->setAuthenticated($casProviderEvent->isValidUser());
     return $authenticatedToken;
 }