/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.ambari.logsearch.web.security; import org.apache.commons.lang.StringUtils; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * Describes LDAP Server connection parameters */ public class LdapProperties { private String primaryUrl; private String secondaryUrl; private boolean useSsl; private boolean anonymousBind; private String managerDn; private String managerPassword; private String baseDN; private String dnAttribute; private String referralMethod; // LDAP group properties private String groupBase; private String groupObjectClass; private String groupMembershipAttr; private String groupNamingAttr; private String adminGroupMappingRules; private boolean groupMappingEnabled; // LDAP user properties private String userBase; private String userObjectClass; private String usernameAttribute; private String userSearchBase = ""; private String groupSearchFilter; private static final String userSearchFilter = "({attribute}={0})"; public List<String> getLdapUrls() { String protocol = useSsl ? "ldaps://" : "ldap://"; if (StringUtils.isEmpty(primaryUrl) || primaryUrl.equalsIgnoreCase("none")) { return Collections.emptyList(); } else { List<String> list = new ArrayList<String>(); list.add(protocol + primaryUrl); if (StringUtils.isNotEmpty(secondaryUrl)) { list.add(protocol + secondaryUrl); } return list; } } public String getPrimaryUrl() { return primaryUrl; } public void setPrimaryUrl(String primaryUrl) { this.primaryUrl = primaryUrl; } public String getSecondaryUrl() { return secondaryUrl; } public void setSecondaryUrl(String secondaryUrl) { this.secondaryUrl = secondaryUrl; } public boolean isUseSsl() { return useSsl; } public void setUseSsl(boolean useSsl) { this.useSsl = useSsl; } public boolean isAnonymousBind() { return anonymousBind; } public void setAnonymousBind(boolean anonymousBind) { this.anonymousBind = anonymousBind; } public String getManagerDn() { return managerDn; } public void setManagerDn(String managerDn) { this.managerDn = managerDn; } public String getManagerPassword() { return managerPassword; } public void setManagerPassword(String managerPassword) { this.managerPassword = managerPassword; } public String getBaseDN() { return baseDN; } public void setBaseDN(String baseDN) { this.baseDN = baseDN; } public String getUserSearchBase() { return userSearchBase; } public void setUserSearchBase(String userSearchBase) { this.userSearchBase = userSearchBase; } public String getUserSearchFilter() { return userSearchFilter.replace("{attribute}", usernameAttribute); } public String getUsernameAttribute() { return usernameAttribute; } public void setUsernameAttribute(String usernameAttribute) { this.usernameAttribute = usernameAttribute; } public String getGroupBase() { return groupBase; } public void setGroupBase(String groupBase) { this.groupBase = groupBase; } public String getGroupObjectClass() { return groupObjectClass; } public void setGroupObjectClass(String groupObjectClass) { this.groupObjectClass = groupObjectClass; } public String getGroupMembershipAttr() { return groupMembershipAttr; } public void setGroupMembershipAttr(String groupMembershipAttr) { this.groupMembershipAttr = groupMembershipAttr; } public String getGroupNamingAttr() { return groupNamingAttr; } public void setGroupNamingAttr(String groupNamingAttr) { this.groupNamingAttr = groupNamingAttr; } public String getAdminGroupMappingRules() { return adminGroupMappingRules; } public void setAdminGroupMappingRules(String adminGroupMappingRules) { this.adminGroupMappingRules = adminGroupMappingRules; } public String getGroupSearchFilter() { return groupSearchFilter; } public void setGroupSearchFilter(String groupSearchFilter) { this.groupSearchFilter = groupSearchFilter; } public boolean isGroupMappingEnabled() { return groupMappingEnabled; } public void setGroupMappingEnabled(boolean groupMappingEnabled) { this.groupMappingEnabled = groupMappingEnabled; } public void setUserBase(String userBase) { this.userBase = userBase; } public void setUserObjectClass(String userObjectClass) { this.userObjectClass = userObjectClass; } public String getUserBase() { return userBase; } public String getUserObjectClass() { return userObjectClass; } public String getDnAttribute() { return dnAttribute; } public void setDnAttribute(String dnAttribute) { this.dnAttribute = dnAttribute; } public void setReferralMethod(String referralMethod) { this.referralMethod = referralMethod; } public String getReferralMethod() { return referralMethod; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null || getClass() != obj.getClass()) return false; LdapProperties that = (LdapProperties) obj; if (primaryUrl != null ? !primaryUrl.equals(that.primaryUrl) : that.primaryUrl != null) return false; if (secondaryUrl != null ? !secondaryUrl.equals(that.secondaryUrl) : that.secondaryUrl != null) return false; if (useSsl != that.useSsl) return false; if (anonymousBind != that.anonymousBind) return false; if (managerDn != null ? !managerDn.equals(that.managerDn) : that.managerDn != null) return false; if (managerPassword != null ? !managerPassword .equals(that.managerPassword) : that.managerPassword != null) return false; if (baseDN != null ? !baseDN.equals(that.baseDN) : that.baseDN != null) return false; if (userBase != null ? !userBase.equals(that.userBase) : that.userBase != null) return false; if (userObjectClass != null ? !userObjectClass .equals(that.userObjectClass) : that.userObjectClass != null) return false; if (usernameAttribute != null ? !usernameAttribute .equals(that.usernameAttribute) : that.usernameAttribute != null) return false; if (groupBase != null ? !groupBase.equals(that.groupBase) : that.groupBase != null) return false; if (groupObjectClass != null ? !groupObjectClass .equals(that.groupObjectClass) : that.groupObjectClass != null) return false; if (groupMembershipAttr != null ? !groupMembershipAttr .equals(that.groupMembershipAttr) : that.groupMembershipAttr != null) return false; if (groupNamingAttr != null ? !groupNamingAttr .equals(that.groupNamingAttr) : that.groupNamingAttr != null) return false; if (adminGroupMappingRules != null ? !adminGroupMappingRules .equals(that.adminGroupMappingRules) : that.adminGroupMappingRules != null) return false; if (groupSearchFilter != null ? !groupSearchFilter .equals(that.groupSearchFilter) : that.groupSearchFilter != null) return false; if (dnAttribute != null ? !dnAttribute.equals(that.dnAttribute) : that.dnAttribute != null) return false; if (referralMethod != null ? !referralMethod .equals(that.referralMethod) : that.referralMethod != null) return false; return true; } @Override public int hashCode() { int result = primaryUrl != null ? primaryUrl.hashCode() : 0; result = 31 * result + (secondaryUrl != null ? secondaryUrl.hashCode() : 0); result = 31 * result + (useSsl ? 1 : 0); result = 31 * result + (anonymousBind ? 1 : 0); result = 31 * result + (managerDn != null ? managerDn.hashCode() : 0); result = 31 * result + (managerPassword != null ? managerPassword.hashCode() : 0); result = 31 * result + (baseDN != null ? baseDN.hashCode() : 0); result = 31 * result + (userBase != null ? userBase.hashCode() : 0); result = 31 * result + (userObjectClass != null ? userObjectClass.hashCode() : 0); result = 31 * result + (usernameAttribute != null ? usernameAttribute.hashCode() : 0); result = 31 * result + (groupBase != null ? groupBase.hashCode() : 0); result = 31 * result + (groupObjectClass != null ? groupObjectClass.hashCode() : 0); result = 31 * result + (groupMembershipAttr != null ? groupMembershipAttr.hashCode() : 0); result = 31 * result + (groupNamingAttr != null ? groupNamingAttr.hashCode() : 0); result = 31 * result + (adminGroupMappingRules != null ? adminGroupMappingRules .hashCode() : 0); result = 31 * result + (groupSearchFilter != null ? groupSearchFilter.hashCode() : 0); result = 31 * result + (dnAttribute != null ? dnAttribute.hashCode() : 0); result = 31 * result + (referralMethod != null ? referralMethod.hashCode() : 0); return result; } @Override public String toString() { return "LdapProperties [primaryUrl=" + primaryUrl + ", secondaryUrl=" + secondaryUrl + ", useSsl=" + useSsl + ", anonymousBind=" + anonymousBind + ", managerDn=" + managerDn + ", managerPassword=" + managerPassword == null ? "null" : "****" + ", baseDN=" + baseDN + ", dnAttribute=" + dnAttribute + ", referralMethod=" + referralMethod + ", groupBase=" + groupBase + ", groupObjectClass=" + groupObjectClass + ", groupMembershipAttr=" + groupMembershipAttr + ", groupNamingAttr=" + groupNamingAttr + ", adminGroupMappingRules=" + adminGroupMappingRules + ", groupMappingEnabled=" + groupMappingEnabled + ", userBase=" + userBase + ", userObjectClass=" + userObjectClass + ", usernameAttribute=" + usernameAttribute + ", userSearchBase=" + userSearchBase + ", groupSearchFilter=" + groupSearchFilter + "]"; } }