/* * Copyright 2013 EMC Corporation * Copyright 2016 Intel Corporation * * Licensed 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 com.emc.storageos.db.client.model; import com.emc.storageos.db.client.util.NullColumnValueGetter; /** * Authentication provider configuration data object */ @Cf("AuthnProvider") @DbKeyspace(DbKeyspace.Keyspaces.GLOBAL) public class AuthnProvider extends DataObject { private static final String EXPECTED_GEO_VERSION_FOR_LDAP_GROUP_SUPPORT = "2.3"; private static final String EXPECTED_GEO_VERSION_FOR_TENANTS_SYNCHRONIZATION = "3.5"; private ProvidersType _mode; private String _description; private Boolean _disable; private Boolean _autoRegCoprHDNImportOSProjects; private StringSet _tenantsSynchronizationOptions; private StringSet _serverUrls; private StringSet _domains; private String _serverCert; private String _managerDN; private String _managerPassword; private String _searchBase; private String _searchFilter; private String _searchAttributeKey; private StringSet _groupWhitelistValues; private String _groupAttribute; private Integer _maxPageSize; private long _lastModified; private String _searchScope; private Boolean _validateCertificates; private StringMap keys; private StringSet _groupObjectClassNames; private StringSet _groupMemberAttributeTypeNames; // names to be used in the 'mode' element of the Provider public static enum ProvidersType { ldap, ad, keystone } // values to be used for the searchScope element public static enum SearchScope { ONELEVEL, SUBTREE } public enum TenantsSynchronizationOptions { ADDITION, DELETION } @Name("mode") public String getMode() { if (null != _mode) { return _mode.toString(); } else { return null; } } public void setMode(String mode) { try { _mode = ProvidersType.valueOf(mode); setChanged("mode"); } catch (IllegalArgumentException ex) { IllegalArgumentException newex = new IllegalArgumentException("The provided value for <mode> is not correct", ex); throw newex; } } @Name("description") public String getDescription() { return _description; } public void setDescription(String description) { _description = description; setChanged("description"); } @Name("disable") public Boolean getDisable() { if (null != _disable) { return _disable; } else { return false; } } public void setDisable(Boolean disable) { _disable = disable; setChanged("disable"); } @Name("autoRegCoprHDNImportOSProjects") public Boolean getAutoRegCoprHDNImportOSProjects() { if (null != _autoRegCoprHDNImportOSProjects) { return _autoRegCoprHDNImportOSProjects; } else { return false; } } public void setAutoRegCoprHDNImportOSProjects(Boolean autoRegCoprHDNImportOSProjects) { _autoRegCoprHDNImportOSProjects = autoRegCoprHDNImportOSProjects; setChanged("autoRegCoprHDNImportOSProjects"); } @AllowedGeoVersion(version = EXPECTED_GEO_VERSION_FOR_TENANTS_SYNCHRONIZATION) @Name("tenantsSynchronizationOptions") public StringSet getTenantsSynchronizationOptions() { if (_tenantsSynchronizationOptions == null) { _tenantsSynchronizationOptions = new StringSet(); } return _tenantsSynchronizationOptions; } public void setTenantsSynchronizationOptions( StringSet tenantsSynchronizationOptions) { _tenantsSynchronizationOptions = tenantsSynchronizationOptions; setChanged("tenantsSynchronizationOptions"); } @Name("serverUrls") public StringSet getServerUrls() { return _serverUrls; } public void setServerUrls( StringSet server_urls) { _serverUrls = server_urls; setChanged("serverUrls"); } @Name("domains") @AlternateId("AltIdIndex") public StringSet getDomains() { return _domains; } public void setDomains(StringSet domains) { _domains = domains; setChanged("domains"); } @Deprecated @Name("serverCert") public String getServerCert() { return _serverCert; } @Deprecated public void setServerCert(String urls) { _serverCert = urls; setChanged("serverCert"); } @Name("managerDN") public String getManagerDN() { return _managerDN; } public void setManagerDN(String manager_dn) { _managerDN = manager_dn; setChanged("managerDN"); } @Encrypt @Name("managerPassword") public String getManagerPassword() { return _managerPassword; } public void setManagerPassword( String manager_password) { _managerPassword = manager_password; setChanged("managerPassword"); } @Name("searchBase") public String getSearchBase() { return _searchBase; } public void setSearchBase( String search_base) { _searchBase = search_base; setChanged("searchBase"); } @Name("searchFilter") public String getSearchFilter() { return _searchFilter; } public void setSearchFilter( String search_filter) { _searchFilter = search_filter; setChanged("searchFilter"); } @Name("searchScope") public String getSearchScope() { return _searchScope; } public void setSearchScope( String searchScope) { _searchScope = searchScope; setChanged("searchScope"); } @Deprecated @Name("searchAttributeKey") public String getSearchAttributeKey() { return _searchAttributeKey; } @Deprecated public void setSearchAttributeKey( String search_attribute_key) { _searchAttributeKey = search_attribute_key; setChanged("searchAttributeKey"); } @Name("groupWhitelistValues") public StringSet getGroupWhitelistValues() { return _groupWhitelistValues; } public void setGroupWhitelistValues(StringSet group_whitelist_values) { _groupWhitelistValues = group_whitelist_values; setChanged("groupWhitelistValues"); } @Name("groupAttribute") public String getGroupAttribute() { return _groupAttribute; } public void setGroupAttribute(String group_attribute) { _groupAttribute = group_attribute; setChanged("groupAttribute"); } @Name("maxPageSize") public Integer getMaxPageSize() { return _maxPageSize; } public void setMaxPageSize(Integer maxPageSize) { _maxPageSize = maxPageSize; setChanged("maxPageSize"); } @Name("lastModified") public Long getLastModified() { return _lastModified; } public void setLastModified(Long lastModified) { _lastModified = lastModified; setChanged("lastModified"); } @Name("keys") public StringMap getKeys() { return keys; } public String getKeyValue(String key) { String value = null; if (keys != null ) { value = keys.get(key); } return (value == null) ? NullColumnValueGetter.getNullStr() : value; } public void setKeys(StringMap keys) { this.keys = keys; setChanged("keys"); } public void addKey(String key, String value) { if (getKeys() == null) { setKeys(new StringMap()); } getKeys().put(key, value); setChanged("keys"); } public void removeKey(String key) { if (keys != null) { getKeys().remove(key); setChanged("keys"); } } public void removeKeys(String[] keyArray) { if (keys != null) { for(String key : keyArray) { getKeys().remove(key); } setChanged("keys"); } } @AllowedGeoVersion(version = EXPECTED_GEO_VERSION_FOR_LDAP_GROUP_SUPPORT) @Name("groupObjectClassNames") public StringSet getGroupObjectClassNames() { if (_groupObjectClassNames == null) { _groupObjectClassNames = new StringSet(); } return _groupObjectClassNames; } public void setGroupObjectClassNames(StringSet groupObjectClassNames) { this._groupObjectClassNames = groupObjectClassNames; setChanged("groupObjectClassNames"); } @AllowedGeoVersion(version = EXPECTED_GEO_VERSION_FOR_LDAP_GROUP_SUPPORT) @Name("groupMemberAttributeTypeNames") public StringSet getGroupMemberAttributeTypeNames() { if (_groupMemberAttributeTypeNames == null) { _groupMemberAttributeTypeNames = new StringSet(); } return _groupMemberAttributeTypeNames; } public void setGroupMemberAttributeTypeNames(StringSet groupMemberAttributeTypeNames) { this._groupMemberAttributeTypeNames = groupMemberAttributeTypeNames; setChanged("groupMemberAttributeTypeNames"); } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("AuthnConfiguration [mode="); sb.append(_mode); sb.append(", description="); sb.append(_description); sb.append(", disable="); sb.append(_disable); sb.append(", serverUrls="); if (null != _serverUrls) { for (String s : _serverUrls) { sb.append(s).append(","); } } sb.append(", domains="); if (null != _domains) { for (String s : _domains) { sb.append(s).append(","); } } sb.append(", managerDN="); sb.append(_managerDN); sb.append(", managerPassword="); sb.append("***PASSWORD MASKED***"); sb.append(", searchBase="); sb.append(_searchBase); sb.append(", searchFilter="); sb.append(_searchFilter); sb.append(", searchScope="); sb.append(_searchScope); sb.append(", groupWhitelistValues="); if (null != _groupWhitelistValues) { for (String s : _groupWhitelistValues) { sb.append(s).append(","); } } sb.append(", groupAttribute="); sb.append(_groupAttribute); sb.append(", maxPageSize="); sb.append(_maxPageSize); sb.append(", objectClassNames="); sb.append(_groupObjectClassNames); sb.append(", groupMemberAttributeTypeNames="); sb.append(_groupMemberAttributeTypeNames); sb.append("]"); return sb.toString(); } @Deprecated @Name("validateCertificates") public Boolean getValidateCertificates() { return _validateCertificates; } @Deprecated public void setValidateCertificates(Boolean validateCertificates) { _validateCertificates = validateCertificates; setChanged("validateCertificates"); } /** * Returns the minimum expected version for this API to the * consumers of the apisvc (portal). * * @return minimum expected geo version for this api. */ public static String getExpectedGeoVDCVersionForLDAPGroupSupport() { return EXPECTED_GEO_VERSION_FOR_LDAP_GROUP_SUPPORT; } }