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