mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-06 05:07:41 +00:00
GUACAMOLE-1006: Convert LDAP extension to use new StringGuacamoleProperty Collection.
This commit is contained in:
@@ -330,7 +330,7 @@ public class AuthenticationProviderService {
|
|||||||
throws GuacamoleException {
|
throws GuacamoleException {
|
||||||
|
|
||||||
// Get attributes from configuration information
|
// Get attributes from configuration information
|
||||||
List<String> attrList = config.getAttributes();
|
Collection<String> attrList = config.getAttributes();
|
||||||
|
|
||||||
// If there are no attributes there is no reason to search LDAP
|
// If there are no attributes there is no reason to search LDAP
|
||||||
if (attrList.isEmpty())
|
if (attrList.isEmpty())
|
||||||
|
@@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
package org.apache.guacamole.auth.ldap;
|
package org.apache.guacamole.auth.ldap;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.apache.directory.api.ldap.model.filter.ExprNode;
|
import org.apache.directory.api.ldap.model.filter.ExprNode;
|
||||||
import org.apache.directory.api.ldap.model.message.AliasDerefMode;
|
import org.apache.directory.api.ldap.model.message.AliasDerefMode;
|
||||||
@@ -124,7 +125,7 @@ public class ConnectedLDAPConfiguration implements LDAPConfiguration, AutoClosea
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getUsernameAttributes() throws GuacamoleException {
|
public Collection<String> getUsernameAttributes() throws GuacamoleException {
|
||||||
return config.getUsernameAttributes();
|
return config.getUsernameAttributes();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -139,7 +140,7 @@ public class ConnectedLDAPConfiguration implements LDAPConfiguration, AutoClosea
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getGroupNameAttributes() throws GuacamoleException {
|
public Collection<String> getGroupNameAttributes() throws GuacamoleException {
|
||||||
return config.getGroupNameAttributes();
|
return config.getGroupNameAttributes();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -209,7 +210,7 @@ public class ConnectedLDAPConfiguration implements LDAPConfiguration, AutoClosea
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getAttributes() throws GuacamoleException {
|
public Collection<String> getAttributes() throws GuacamoleException {
|
||||||
return config.getAttributes();
|
return config.getAttributes();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
package org.apache.guacamole.auth.ldap.conf;
|
package org.apache.guacamole.auth.ldap.conf;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.Collection;
|
||||||
import org.apache.directory.api.ldap.model.filter.ExprNode;
|
import org.apache.directory.api.ldap.model.filter.ExprNode;
|
||||||
import org.apache.directory.api.ldap.model.message.AliasDerefMode;
|
import org.apache.directory.api.ldap.model.message.AliasDerefMode;
|
||||||
import org.apache.directory.api.ldap.model.name.Dn;
|
import org.apache.directory.api.ldap.model.name.Dn;
|
||||||
@@ -75,8 +75,8 @@ public class EnvironmentLDAPConfiguration implements LDAPConfiguration {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getUsernameAttributes() throws GuacamoleException {
|
public Collection<String> getUsernameAttributes() throws GuacamoleException {
|
||||||
return environment.getProperty(
|
return environment.getPropertyCollection(
|
||||||
LDAPGuacamoleProperties.LDAP_USERNAME_ATTRIBUTE,
|
LDAPGuacamoleProperties.LDAP_USERNAME_ATTRIBUTE,
|
||||||
DEFAULT.getUsernameAttributes()
|
DEFAULT.getUsernameAttributes()
|
||||||
);
|
);
|
||||||
@@ -98,8 +98,8 @@ public class EnvironmentLDAPConfiguration implements LDAPConfiguration {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getGroupNameAttributes() throws GuacamoleException {
|
public Collection<String> getGroupNameAttributes() throws GuacamoleException {
|
||||||
return environment.getProperty(
|
return environment.getPropertyCollection(
|
||||||
LDAPGuacamoleProperties.LDAP_GROUP_NAME_ATTRIBUTE,
|
LDAPGuacamoleProperties.LDAP_GROUP_NAME_ATTRIBUTE,
|
||||||
DEFAULT.getGroupNameAttributes()
|
DEFAULT.getGroupNameAttributes()
|
||||||
);
|
);
|
||||||
@@ -210,8 +210,8 @@ public class EnvironmentLDAPConfiguration implements LDAPConfiguration {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getAttributes() throws GuacamoleException {
|
public Collection<String> getAttributes() throws GuacamoleException {
|
||||||
return environment.getProperty(
|
return environment.getPropertyCollection(
|
||||||
LDAPGuacamoleProperties.LDAP_USER_ATTRIBUTES,
|
LDAPGuacamoleProperties.LDAP_USER_ATTRIBUTES,
|
||||||
DEFAULT.getAttributes()
|
DEFAULT.getAttributes()
|
||||||
);
|
);
|
||||||
|
@@ -22,6 +22,7 @@ package org.apache.guacamole.auth.ldap.conf;
|
|||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import static com.fasterxml.jackson.annotation.JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY;
|
import static com.fasterxml.jackson.annotation.JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
@@ -331,7 +332,7 @@ public class JacksonLDAPConfiguration implements LDAPConfiguration {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getUsernameAttributes() throws GuacamoleException {
|
public Collection<String> getUsernameAttributes() throws GuacamoleException {
|
||||||
return withDefault(usernameAttributes, defaultConfig::getUsernameAttributes);
|
return withDefault(usernameAttributes, defaultConfig::getUsernameAttributes);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -348,7 +349,7 @@ public class JacksonLDAPConfiguration implements LDAPConfiguration {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getGroupNameAttributes() throws GuacamoleException {
|
public Collection<String> getGroupNameAttributes() throws GuacamoleException {
|
||||||
return withDefault(groupNameAttributes, defaultConfig::getGroupNameAttributes);
|
return withDefault(groupNameAttributes, defaultConfig::getGroupNameAttributes);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -424,7 +425,7 @@ public class JacksonLDAPConfiguration implements LDAPConfiguration {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getAttributes() throws GuacamoleException {
|
public Collection<String> getAttributes() throws GuacamoleException {
|
||||||
return withDefault(userAttributes, defaultConfig::getAttributes);
|
return withDefault(userAttributes, defaultConfig::getAttributes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
package org.apache.guacamole.auth.ldap.conf;
|
package org.apache.guacamole.auth.ldap.conf;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.apache.directory.api.ldap.model.filter.ExprNode;
|
import org.apache.directory.api.ldap.model.filter.ExprNode;
|
||||||
import org.apache.directory.api.ldap.model.message.AliasDerefMode;
|
import org.apache.directory.api.ldap.model.message.AliasDerefMode;
|
||||||
@@ -84,7 +85,7 @@ public interface LDAPConfiguration {
|
|||||||
* @throws GuacamoleException
|
* @throws GuacamoleException
|
||||||
* If the username attributes cannot be retrieved.
|
* If the username attributes cannot be retrieved.
|
||||||
*/
|
*/
|
||||||
List<String> getUsernameAttributes() throws GuacamoleException;
|
Collection<String> getUsernameAttributes() throws GuacamoleException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the base DN under which all Guacamole users will be stored
|
* Returns the base DN under which all Guacamole users will be stored
|
||||||
@@ -125,7 +126,7 @@ public interface LDAPConfiguration {
|
|||||||
* @throws GuacamoleException
|
* @throws GuacamoleException
|
||||||
* If the group name attributes cannot be retrieved.
|
* If the group name attributes cannot be retrieved.
|
||||||
*/
|
*/
|
||||||
List<String> getGroupNameAttributes() throws GuacamoleException;
|
Collection<String> getGroupNameAttributes() throws GuacamoleException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the base DN under which all Guacamole role based access control
|
* Returns the base DN under which all Guacamole role based access control
|
||||||
@@ -305,7 +306,7 @@ public interface LDAPConfiguration {
|
|||||||
* If the names of the LDAP user attributes to be exposed as parameter
|
* If the names of the LDAP user attributes to be exposed as parameter
|
||||||
* tokens cannot be retrieved.
|
* tokens cannot be retrieved.
|
||||||
*/
|
*/
|
||||||
List<String> getAttributes() throws GuacamoleException;
|
Collection<String> getAttributes() throws GuacamoleException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the name of the LDAP attribute used to enumerate members in a
|
* Returns the name of the LDAP attribute used to enumerate members in a
|
||||||
|
@@ -84,8 +84,8 @@ public class LDAPGuacamoleProperties {
|
|||||||
* one attribute, and the concatenation of that attribute and the value of
|
* one attribute, and the concatenation of that attribute and the value of
|
||||||
* LDAP_USER_BASE_DN must equal the user's full DN.
|
* LDAP_USER_BASE_DN must equal the user's full DN.
|
||||||
*/
|
*/
|
||||||
public static final StringListProperty LDAP_USERNAME_ATTRIBUTE =
|
public static final StringGuacamoleProperty LDAP_USERNAME_ATTRIBUTE =
|
||||||
new StringListProperty() {
|
new StringGuacamoleProperty() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() { return "ldap-username-attribute"; }
|
public String getName() { return "ldap-username-attribute"; }
|
||||||
@@ -97,8 +97,8 @@ public class LDAPGuacamoleProperties {
|
|||||||
* attributes must be present within each Guacamole user group's record in
|
* attributes must be present within each Guacamole user group's record in
|
||||||
* the LDAP directory for that group to be visible.
|
* the LDAP directory for that group to be visible.
|
||||||
*/
|
*/
|
||||||
public static final StringListProperty LDAP_GROUP_NAME_ATTRIBUTE =
|
public static final StringGuacamoleProperty LDAP_GROUP_NAME_ATTRIBUTE =
|
||||||
new StringListProperty() {
|
new StringGuacamoleProperty() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() { return "ldap-group-name-attribute"; }
|
public String getName() { return "ldap-group-name-attribute"; }
|
||||||
@@ -277,8 +277,8 @@ public class LDAPGuacamoleProperties {
|
|||||||
* Custom attribute or attributes to query from Guacamole user's record in
|
* Custom attribute or attributes to query from Guacamole user's record in
|
||||||
* the LDAP directory.
|
* the LDAP directory.
|
||||||
*/
|
*/
|
||||||
public static final StringListProperty LDAP_USER_ATTRIBUTES =
|
public static final StringGuacamoleProperty LDAP_USER_ATTRIBUTES =
|
||||||
new StringListProperty() {
|
new StringGuacamoleProperty() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() { return "ldap-user-attributes"; }
|
public String getName() { return "ldap-user-attributes"; }
|
||||||
|
@@ -1,62 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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.guacamole.auth.ldap.conf;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
import org.apache.guacamole.GuacamoleException;
|
|
||||||
import org.apache.guacamole.properties.GuacamoleProperty;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A GuacamoleProperty whose value is a List of Strings. The string value
|
|
||||||
* parsed to produce this list is a comma-delimited list. Duplicate values are
|
|
||||||
* ignored, as is any whitespace following delimiters. To maintain
|
|
||||||
* compatibility with the behavior of Java properties in general, only
|
|
||||||
* whitespace at the beginning of each value is ignored; trailing whitespace
|
|
||||||
* becomes part of the value.
|
|
||||||
*/
|
|
||||||
public abstract class StringListProperty implements GuacamoleProperty<List<String>> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A pattern which matches against the delimiters between values. This is
|
|
||||||
* currently simply a comma and any following whitespace. Parts of the
|
|
||||||
* input string which match this pattern will not be included in the parsed
|
|
||||||
* result.
|
|
||||||
*/
|
|
||||||
private static final Pattern DELIMITER_PATTERN = Pattern.compile(",\\s*");
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<String> parseValue(String values) throws GuacamoleException {
|
|
||||||
|
|
||||||
// If no property provided, return null.
|
|
||||||
if (values == null)
|
|
||||||
return null;
|
|
||||||
|
|
||||||
// Split string into a list of individual values
|
|
||||||
List<String> stringValues = Arrays.asList(DELIMITER_PATTERN.split(values));
|
|
||||||
if (stringValues.isEmpty())
|
|
||||||
return null;
|
|
||||||
|
|
||||||
return stringValues;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -183,7 +183,7 @@ public class UserService {
|
|||||||
throws GuacamoleException {
|
throws GuacamoleException {
|
||||||
|
|
||||||
// Pull username attributes from properties
|
// Pull username attributes from properties
|
||||||
List<String> usernameAttributes = config.getUsernameAttributes();
|
List<String> usernameAttributes = new ArrayList<>(config.getUsernameAttributes());
|
||||||
|
|
||||||
// We need exactly one base DN to derive the user DN
|
// We need exactly one base DN to derive the user DN
|
||||||
if (usernameAttributes.size() != 1) {
|
if (usernameAttributes.size() != 1) {
|
||||||
|
Reference in New Issue
Block a user