/**
  * @param UserProviderInterface $provider
  * @param TokenInterface        $token
  *
  * @return bool|ApiKeyUserToken
  * @throws AuthenticationException
  */
 protected function doAuth($provider, TokenInterface $token)
 {
     if (!$provider instanceof ApiKeyUserProviderInterface) {
         return false;
     }
     /** @var UserInterface $user */
     $user = $provider->loadUserByApiKey($token->getCredentials());
     if ($user && $user->isEnabled()) {
         $authenticatedToken = new ApiKeyUserToken($user->getRoles());
         $authenticatedToken->setUser($user);
         return $authenticatedToken;
     }
     throw new AuthenticationCredentialsNotFoundException();
 }