@Override
 public boolean authenticateUser(String principal, AuthenticationToken token)
     throws AccumuloSecurityException {
   if (!(token instanceof PasswordToken))
     throw new AccumuloSecurityException(principal, SecurityErrorCode.INVALID_TOKEN);
   PasswordToken pt = (PasswordToken) token;
   byte[] pass;
   String zpath = ZKUserPath + "/" + principal;
   pass = zooCache.get(zpath);
   boolean result = ZKSecurityTool.checkPass(pt.getPassword(), pass);
   if (!result) {
     zooCache.clear(zpath);
     pass = zooCache.get(zpath);
     result = ZKSecurityTool.checkPass(pt.getPassword(), pass);
   }
   return result;
 }