/**
  * {@inheritDocs}
  */
 public function authenticateToken(TokenInterface $token, UserProviderInterface $userProvider, $providerKey)
 {
     list($uid, $timestamp, $hashedPassword) = $token->getCredentials();
     /** @var $userProvider \Bangpound\Bundle\DrupalBundle\Security\User\UserProvider */
     $username = $userProvider->getUsernameForHashedPassword($uid, $timestamp, $hashedPassword);
     if (!$username) {
         throw new AuthenticationException(sprintf(' "%s" does not exist.', serialize($token->getCredentials())));
     }
     $user = $userProvider->loadUserByUsername($username);
     return new PreAuthenticatedToken($user, $token->getCredentials(), $providerKey, $user->getRoles());
 }