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; } }