GUACAMOLE-593: Allow group membership attribute to be configured.

This commit is contained in:
Nick Couchman
2018-07-30 16:45:51 -04:00
parent 5ce0c0f035
commit 343b21aba5
3 changed files with 22 additions and 2 deletions

View File

@@ -359,4 +359,11 @@ public class ConfigurationService {
);
}
public String getMemberAttribute() throws GuacamoleException {
return environment.getProperty(
LDAPGuacamoleProperties.LDAP_MEMBER_ATTRIBUTE,
"member"
);
}
}

View File

@@ -215,4 +215,11 @@ public class LDAPGuacamoleProperties {
public String getName() { return "ldap-user-attributes"; }
};
public static final StringGuacamoleProperty LDAP_MEMBER_ATTRIBUTE = new StringGuacamoleProperty() {
@Override
public String getName() { return "ldap-member-attribute"; }
};
}

View File

@@ -245,7 +245,10 @@ public class ConnectionService {
StringBuilder connectionSearchFilter = new StringBuilder();
// Add the prefix to the search filter, prefix filter searches for guacConfigGroups with the userDN as the member attribute value
connectionSearchFilter.append("(&(objectClass=guacConfigGroup)(|(member=");
connectionSearchFilter.append("(&(objectClass=guacConfigGroup)");
connectionSearchFilter.append("(|(");
connectionSearchFilter.append(confService.getMemberAttribute());
connectionSearchFilter.append("=");
connectionSearchFilter.append(escapingService.escapeLDAPSearchFilter(userDN));
connectionSearchFilter.append(")");
@@ -257,7 +260,10 @@ public class ConnectionService {
LDAPSearchResults userRoleGroupResults = ldapConnection.search(
groupBaseDN,
LDAPConnection.SCOPE_SUB,
"(&(!(objectClass=guacConfigGroup))(member=" + escapingService.escapeLDAPSearchFilter(userDN) + "))",
"(&(!(objectClass=guacConfigGroup))("
+ confService.getMemberAttribute()
+ "=" + escapingService.escapeLDAPSearchFilter(userDN)
+ "))",
null,
false,
confService.getLDAPSearchConstraints()