package io.lumify.ldap; import io.lumify.core.config.Configurable; import io.lumify.core.exception.LumifyException; import com.unboundid.ldap.sdk.SearchScope; import java.lang.reflect.Field; import java.util.Arrays; import java.util.List; public class LdapSearchConfiguration { private String userSearchBase; private SearchScope userSearchScope; private List<String> userAttributes; private String userSearchFilter; private String userCertificateAttribute; private String groupSearchBase; private SearchScope groupSearchScope; private String groupNameAttribute; private String groupSearchFilter; @Configurable(name = "userSearchBase") public void setUserSearchBase(String userSearchBase) { this.userSearchBase = userSearchBase; } @Configurable(name = "userSearchScope") public void setUserSearchScope(String userSearchScope) { this.userSearchScope = toSearchScope(userSearchScope); } @Configurable(name = "userAttributes") public void setUserAttributes(String userAttributes) { this.userAttributes = Arrays.asList(userAttributes.split(",")); } @Configurable(name = "userSearchFilter", defaultValue = "(cn=${cn})") public void setUserSearchFilter(String userSearchFilter) { this.userSearchFilter = userSearchFilter; } @Configurable(name = "userCertificateAttribute", defaultValue = "userCertificate;binary") public void setUserCertificateAttribute(String userCertificateAttribute) { this.userCertificateAttribute = userCertificateAttribute; } @Configurable(name = "groupSearchBase") public void setGroupSearchBase(String groupSearchBase) { this.groupSearchBase = groupSearchBase; } @Configurable(name = "groupSearchScope") public void setGroupSearchScope(String groupSearchScope) { this.groupSearchScope = toSearchScope(groupSearchScope); } @Configurable(name = "groupNameAttribute", defaultValue = "cn") public void setGroupNameAttribute(String groupNameAttribute) { this.groupNameAttribute = groupNameAttribute; } @Configurable(name = "groupSearchFilter", defaultValue = "(uniqueMember=${dn})") public void setGroupSearchFilter(String groupSearchFilter) { this.groupSearchFilter = groupSearchFilter; } public String getUserSearchBase() { return userSearchBase; } public SearchScope getUserSearchScope() { return userSearchScope; } public List<String> getUserAttributes() { return userAttributes; } public String getUserCertificateAttribute() { return userCertificateAttribute; } public String getGroupSearchBase() { return groupSearchBase; } public SearchScope getGroupSearchScope() { return groupSearchScope; } public String getUserSearchFilter() { return userSearchFilter; } public String getGroupNameAttribute() { return groupNameAttribute; } public String getGroupSearchFilter() { return groupSearchFilter; } private SearchScope toSearchScope(String searchScope) { try { Field f = SearchScope.class.getField(searchScope.toUpperCase()); return (SearchScope) f.get(null); } catch (Exception e) { throw new LumifyException("unable to configure search scope", e); } } }