Connector c = getInstance(implementingClass, conf).getConnector(getPrincipal(implementingClass, conf),
CredentialHelper.extractToken(getTokenClass(implementingClass, conf), getToken(implementingClass, conf)));
if (!c.securityOperations().authenticateUser(getPrincipal(implementingClass, conf),
CredentialHelper.extractToken(getTokenClass(implementingClass, conf), getToken(implementingClass, conf))))
throw new IOException("Unable to authenticate user");
if (!c.securityOperations().hasTablePermission(getPrincipal(implementingClass, conf), getInputTableName(implementingClass, conf), TablePermission.READ))
throw new IOException("Unable to access table");
if (!conf.getBoolean(enumToConfKey(implementingClass, Features.USE_LOCAL_ITERATORS), false)) {
// validate that any scan-time iterators can be loaded by the the tablet servers
for (IteratorSetting iter : getIterators(implementingClass, conf)) {