mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-10-12 23:37:00 +08:00
Dbeaver/pro#7192 ldap case insensitivity (#3907)
* dbeaver/pro#7192 ldap case insensitivity * dbeaver/pro#7192 ldap case-insensitive matching * dbeaver/pro#7192 case insensitive from auth descriptor --------- Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
This commit is contained in:
+2
-2
@@ -418,10 +418,10 @@ public class LdapAuthProvider implements SMAuthProviderExternal<SMSession>, SMBr
|
||||
private String buildFullUserDN(String userName, LdapSettings ldapSettings) {
|
||||
String fullUserDN = userName;
|
||||
|
||||
if (!fullUserDN.startsWith(ldapSettings.getUserIdentifierAttr())) {
|
||||
if (!CommonUtils.startsWithIgnoreCase(fullUserDN, ldapSettings.getUserIdentifierAttr())) {
|
||||
fullUserDN = String.join("=", ldapSettings.getUserIdentifierAttr(), userName);
|
||||
}
|
||||
if (CommonUtils.isNotEmpty(ldapSettings.getBaseDN()) && !fullUserDN.endsWith(ldapSettings.getBaseDN())) {
|
||||
if (CommonUtils.isNotEmpty(ldapSettings.getBaseDN()) && !CommonUtils.endsWithIgnoreCase(fullUserDN, ldapSettings.getBaseDN())) {
|
||||
fullUserDN = String.join(",", fullUserDN, ldapSettings.getBaseDN());
|
||||
}
|
||||
|
||||
|
||||
+16
-3
@@ -2577,7 +2577,8 @@ public class CBEmbeddedSecurityController<T extends ServletAuthApplication>
|
||||
.flatMap(externalTeamId -> findTeamByExternalTeamId(
|
||||
allTeams,
|
||||
externalTeamIdMetadataFieldName,
|
||||
externalTeamId
|
||||
externalTeamId,
|
||||
authProvider.isCaseInsensitive()
|
||||
).stream())
|
||||
.map(SMTeam::getTeamId)
|
||||
.toArray(String[]::new);
|
||||
@@ -2614,17 +2615,29 @@ public class CBEmbeddedSecurityController<T extends ServletAuthApplication>
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private List<SMTeam> findTeamByExternalTeamId(SMTeam[] allTeams, String externalGroupParameterName, String groupId) {
|
||||
private List<SMTeam> findTeamByExternalTeamId(
|
||||
SMTeam[] allTeams,
|
||||
String externalGroupParameterName,
|
||||
String groupId,
|
||||
boolean isCaseInsensitive
|
||||
) {
|
||||
List<SMTeam> result = new ArrayList<>();
|
||||
for (SMTeam team : allTeams) {
|
||||
String teamGroupId = team.getMetaParameters().get(externalGroupParameterName);
|
||||
if (CommonUtils.equalObjects(teamGroupId, groupId)) {
|
||||
if (matchesGroupId(teamGroupId, groupId, isCaseInsensitive)) {
|
||||
result.add(team);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private boolean matchesGroupId(String teamGroupId, String groupId, boolean isCaseInsensitive) {
|
||||
if (isCaseInsensitive) {
|
||||
return teamGroupId != null && teamGroupId.equalsIgnoreCase(groupId);
|
||||
}
|
||||
return CommonUtils.equalObjects(teamGroupId, groupId);
|
||||
}
|
||||
|
||||
|
||||
private String readProviderConfigId(String authAttemptId, String authProviderId) throws DBException {
|
||||
try (Connection dbCon = database.openConnection()) {
|
||||
|
||||
Reference in New Issue
Block a user