package com.denismo.aws.iam;
import org.apache.directory.api.ldap.model.entry.Entry;
import org.apache.directory.api.ldap.model.exception.LdapAuthenticationException;
import org.apache.directory.api.ldap.model.exception.LdapInvalidAttributeValueException;
import org.slf4j.LoggerFactory;
import java.util.LinkedList;
import java.util.List;
/**
* Created by jweede on 4/5/16.
*/
public class IAMDualValidator implements _IAMPasswordValidator {
private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(IAMDualValidator.class);
private List<_IAMPasswordValidator> validators;
public IAMDualValidator() {
this.validators = new LinkedList<_IAMPasswordValidator>();
this.validators.add(new IAMAccountPasswordValidator());
this.validators.add(new IAMSecretKeyValidator());
}
@Override
public boolean verifyIAMPassword(Entry user, String pw) throws LdapInvalidAttributeValueException, LdapAuthenticationException {
for (_IAMPasswordValidator v : this.validators) {
LOG.debug("Dual Validator: trying {} for {}", v.getClass().getName(), user.get("uid").toString());
if (v.verifyIAMPassword(user, pw)) {
return true;
}
}
return false;
}
}