mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
ALF-9920: Prevent multiple invalid password checks to the same LDAP account in multiple subsystems (use a static Set of checked environments)
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@32685 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -20,8 +20,10 @@ package org.alfresco.repo.security.authentication.ldap;
|
|||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Hashtable;
|
import java.util.Hashtable;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import javax.naming.AuthenticationNotSupportedException;
|
import javax.naming.AuthenticationNotSupportedException;
|
||||||
import javax.naming.Context;
|
import javax.naming.Context;
|
||||||
@@ -49,6 +51,9 @@ public class LDAPInitialDirContextFactoryImpl implements LDAPInitialDirContextFa
|
|||||||
{
|
{
|
||||||
private static final Log logger = LogFactory.getLog(LDAPInitialDirContextFactoryImpl.class);
|
private static final Log logger = LogFactory.getLog(LDAPInitialDirContextFactoryImpl.class);
|
||||||
|
|
||||||
|
private static Set<Map<String, String>> checkedEnvs = Collections.synchronizedSet(new HashSet<Map<String, String>>(
|
||||||
|
11));
|
||||||
|
|
||||||
private Map<String, String> defaultEnvironment = Collections.<String, String> emptyMap();
|
private Map<String, String> defaultEnvironment = Collections.<String, String> emptyMap();
|
||||||
private Map<String, String> authenticatedEnvironment = Collections.<String, String> emptyMap();
|
private Map<String, String> authenticatedEnvironment = Collections.<String, String> emptyMap();
|
||||||
|
|
||||||
@@ -381,6 +386,9 @@ public class LDAPInitialDirContextFactoryImpl implements LDAPInitialDirContextFa
|
|||||||
env.putAll(authenticatedEnvironment);
|
env.putAll(authenticatedEnvironment);
|
||||||
env.put(Context.SECURITY_PRINCIPAL, principal);
|
env.put(Context.SECURITY_PRINCIPAL, principal);
|
||||||
env.put(Context.SECURITY_CREDENTIALS, "sdasdasdasdasd123123123");
|
env.put(Context.SECURITY_CREDENTIALS, "sdasdasdasdasd123123123");
|
||||||
|
if (!checkedEnvs.contains(env))
|
||||||
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -403,6 +411,10 @@ public class LDAPInitialDirContextFactoryImpl implements LDAPInitialDirContextFa
|
|||||||
{
|
{
|
||||||
// already done
|
// already done
|
||||||
}
|
}
|
||||||
|
// Record this environment as checked so that we don't check it again on further restarts / other subsystem
|
||||||
|
// instances
|
||||||
|
checkedEnvs.add(env);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user