/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package com.emc.storageos.model.auth; import org.codehaus.jackson.annotate.JsonProperty; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import java.util.LinkedHashSet; import java.util.Set; /** * Authentication provider object for POST */ @XmlRootElement(name = "authnprovider_create") public class AuthnCreateParam extends AuthnProviderBaseParam { /** * */ private Set<String> tenantsSynchronizationOptions; /** * Valid ldap or ldaps url strings. * */ private Set<String> serverUrls; /** * Active Directory domain names associated with this * provider. If the server_url points to a Active Directory forest * global catalog server, you may specify all or a subset of the forest's * domains which this provider needs to interact with. * For non Active Directory servers, domain represents a logical * abstraction for this server which may not correspond to a network name. * */ private Set<String> domains; /** * Names of the groups to be included when querying Active Directory * for group membership information about a user or group. If the White List * is set to a value, the provider will only receive group membership information * about the groups matched by the value. If the White List is empty, all group * membership information will be retrieved. (blank == "*"). * */ private Set<String> groupWhitelistValues; /** * Attribute for group search. This is the group's objectClass attribute that will be used to represent group. * Once set during creation of the provider, the value for this parameter cannot be changed. * */ private Set<String> groupObjectClasses; /** * Attribute for group search. This is the group's member(like) attribute that will be used to represent group's members. * Once set during creation of the provider, the value for this parameter cannot be changed. * This applies only for the LDAP, for AD, usually user has the group information where as * in LDAP, group has the member information. * */ private Set<String> groupMemberAttributes; public AuthnCreateParam() { } @XmlElementWrapper(name = "tenants_synchronization_options") @XmlElement(name = "tenants_synchronization_option") public Set<String> getTenantsSynchronizationOptions() { if (tenantsSynchronizationOptions == null) { tenantsSynchronizationOptions = new LinkedHashSet<String>(); } return tenantsSynchronizationOptions; } public void setTenantsSynchronizationOptions(Set<String> tenantsSynchronizationOptions) { this.tenantsSynchronizationOptions = tenantsSynchronizationOptions; } @XmlElementWrapper(name = "server_urls") @XmlElement(name = "server_url") public Set<String> getServerUrls() { if (serverUrls == null) { serverUrls = new LinkedHashSet<String>(); } return serverUrls; } public void setServerUrls(Set<String> serverUrls) { this.serverUrls = serverUrls; } @XmlElementWrapper @XmlElement(name = "domain") public Set<String> getDomains() { if (domains == null) { domains = new LinkedHashSet<String>(); } return domains; } public void setDomains(Set<String> domains) { this.domains = domains; } @XmlElementWrapper(name = "group_whitelist_values") @XmlElement(name = "group_whitelist_value") public Set<String> getGroupWhitelistValues() { if (groupWhitelistValues == null) { groupWhitelistValues = new LinkedHashSet<String>(); } return groupWhitelistValues; } public void setGroupWhitelistValues(Set<String> groupWhitelistValues) { this.groupWhitelistValues = groupWhitelistValues; } @XmlElementWrapper(name = "group_object_classes") @XmlElement(name = "group_object_class") @JsonProperty("group_object_class") public Set<String> getGroupObjectClasses() { if (groupObjectClasses == null) { groupObjectClasses = new LinkedHashSet<String>(); } return groupObjectClasses; } public void setGroupObjectClasses(Set<String> groupObjectClasses) { this.groupObjectClasses = groupObjectClasses; } @XmlElementWrapper(name = "group_member_attributes") @XmlElement(name = "group_member_attribute") @JsonProperty("group_member_attribute") public Set<String> getGroupMemberAttributes() { if (groupMemberAttributes == null) { groupMemberAttributes = new LinkedHashSet<String>(); } return groupMemberAttributes; } public void setGroupMemberAttributes(Set<String> groupMemberAttributes) { this.groupMemberAttributes = groupMemberAttributes; } @Override public String toString() { StringBuilder sb = new StringBuilder("AuthnCreateParam ["); sb.append(super.toString()); sb.append(", serverUrls="); if (serverUrls != null) { for (String s : serverUrls) { sb.append(s).append(","); } } else { sb.append("null"); } sb.append(", tenantsSynchronizationOptions="); if (tenantsSynchronizationOptions != null) { for (String s : tenantsSynchronizationOptions) { sb.append(s).append(","); } } else { sb.append("null"); } sb.append(", domain="); if (domains != null) { for (String s : domains) { sb.append(s).append(","); } } else { sb.append("null"); } sb.append(", groupWhitelistValues="); if (groupWhitelistValues != null) { for (String s : groupWhitelistValues) { sb.append(s).append(","); } } else { sb.append("null"); } sb.append(", groupObjectClasses="); if (groupObjectClasses != null) { for (String s : groupObjectClasses) { sb.append(s).append(","); } } else { sb.append("null"); } sb.append(", groupMemberAttributes="); if (groupMemberAttributes != null) { for (String s : groupMemberAttributes) { sb.append(s).append(","); } } else { sb.append("null"); } sb.append("]"); return sb.toString(); } }