Support for Active Directory multidomain forest
In AD forest samAccountName (or uid) may not be unique in the entire forest and userPrincipalName contains "@" symbol disallowed in Matrix User Identifiers. This commit reflects changes in ldap_auth_provider that adds mxid generation logic for Active Directory. Signed-off-by: Yuri Konotopov <ykonotopov@gnome.org>
This commit is contained in:
@@ -291,6 +291,9 @@ public abstract class LdapConfig {
|
||||
private boolean enabled;
|
||||
private String filter;
|
||||
|
||||
private boolean activeDirectory;
|
||||
private String defaultDomain;
|
||||
|
||||
private Connection connection = new Connection();
|
||||
private Attribute attribute = new Attribute();
|
||||
private Auth auth = new Auth();
|
||||
@@ -316,6 +319,22 @@ public abstract class LdapConfig {
|
||||
this.filter = filter;
|
||||
}
|
||||
|
||||
public boolean isActiveDirectory() {
|
||||
return activeDirectory;
|
||||
}
|
||||
|
||||
public void setActiveDirectory(boolean activeDirectory) {
|
||||
this.activeDirectory = activeDirectory;
|
||||
}
|
||||
|
||||
public String getDefaultDomain() {
|
||||
return defaultDomain;
|
||||
}
|
||||
|
||||
public void setDefaultDomain(String defaultDomain) {
|
||||
this.defaultDomain = defaultDomain;
|
||||
}
|
||||
|
||||
public Connection getConnection() {
|
||||
return connection;
|
||||
}
|
||||
@@ -407,6 +426,15 @@ public abstract class LdapConfig {
|
||||
throw new ConfigurationException("ldap.identity.token");
|
||||
}
|
||||
|
||||
if(isActiveDirectory()) {
|
||||
if(!StringUtils.equals(LdapBackend.UID, uidType)) {
|
||||
throw new IllegalArgumentException(String.format(
|
||||
"Attribute UID type should be set to %s in Active Directory mode",
|
||||
LdapBackend.UID
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
// Build queries
|
||||
attribute.getThreepid().forEach((k, v) -> {
|
||||
if (StringUtils.isBlank(identity.getMedium().get(k))) {
|
||||
|
||||
Reference in New Issue
Block a user