Configurable, GroupMappingServiceProviderRuleBasedLdapGroupsMapping@LimitedPrivate({"HDFS","MapReduce"})
@Evolving
public class LdapGroupsMapping
extends java.lang.Object
implements GroupMappingServiceProvider, Configurable
GroupMappingServiceProvider which
connects directly to an LDAP server for determining group membership.
This provider should be used only if it is necessary to map users to
groups that reside exclusively in an Active Directory or LDAP installation.
The common case for a Hadoop installation will be that LDAP users and groups
materialized on the Unix servers, and for an installation like that,
ShellBasedUnixGroupsMapping is preferred. However, in cases where
those users and groups aren't materialized in Unix, but need to be used for
access control, this class may be used to communicate directly with the LDAP
server.
It is important to note that resolving group mappings will incur network
traffic, and may cause degraded performance, although user-group mappings
will be cached via the infrastructure provided by Groups.
This implementation does not support configurable search limits. If a filter
is used for searching users or groups which returns more results than are
allowed by the server, an exception will be thrown.
The implementation attempts to resolve group hierarchies,
to a configurable limit.
If the limit is 0, in order to be considered a member of a group,
the user must be an explicit member in LDAP. Otherwise, it will traverse the
group hierarchy n levels up.| Modifier and Type | Class | Description |
|---|---|---|
static class |
LdapGroupsMapping.LdapSslSocketFactory |
An private internal socket factory used to create SSL sockets with custom
configuration.
|
| Modifier and Type | Field | Description |
|---|---|---|
static java.lang.String |
BASE_DN_DEFAULT |
|
static java.lang.String |
BASE_DN_KEY |
|
static java.lang.String |
BIND_PASSWORD_ALIAS_DEFAULT |
|
static java.lang.String |
BIND_PASSWORD_ALIAS_KEY |
|
static java.lang.String |
BIND_PASSWORD_ALIAS_SUFFIX |
|
static java.lang.String |
BIND_PASSWORD_DEFAULT |
|
static java.lang.String |
BIND_PASSWORD_FILE_DEFAULT |
|
static java.lang.String |
BIND_PASSWORD_FILE_KEY |
|
static java.lang.String |
BIND_PASSWORD_FILE_SUFFIX |
|
static java.lang.String |
BIND_PASSWORD_KEY |
|
static java.lang.String |
BIND_PASSWORD_SUFFIX |
|
static java.lang.String |
BIND_USER_DEFAULT |
|
static java.lang.String |
BIND_USER_KEY |
|
static java.lang.String |
BIND_USER_SUFFIX |
|
static java.lang.String |
BIND_USERS_KEY |
|
static java.lang.String |
CONNECTION_TIMEOUT |
|
static int |
CONNECTION_TIMEOUT_DEFAULT |
|
static java.lang.String |
DIRECTORY_SEARCH_TIMEOUT |
|
static int |
DIRECTORY_SEARCH_TIMEOUT_DEFAULT |
|
static java.lang.String |
GROUP_BASE_DN_KEY |
|
static int |
GROUP_HIERARCHY_LEVELS_DEFAULT |
|
static java.lang.String |
GROUP_HIERARCHY_LEVELS_KEY |
|
static java.lang.String |
GROUP_MEMBERSHIP_ATTR_DEFAULT |
|
static java.lang.String |
GROUP_MEMBERSHIP_ATTR_KEY |
|
static java.lang.String |
GROUP_NAME_ATTR_DEFAULT |
|
static java.lang.String |
GROUP_NAME_ATTR_KEY |
|
static java.lang.String |
GROUP_SEARCH_FILTER_DEFAULT |
|
static java.lang.String |
GROUP_SEARCH_FILTER_KEY |
|
static java.lang.String |
GROUP_SEARCH_FILTER_PATTERN |
|
static java.lang.String |
GROUP_SEARCH_FILTER_PATTERN_DEFAULT |
|
static java.lang.String |
LDAP_CONFIG_PREFIX |
|
static java.lang.String |
LDAP_CTX_FACTORY_CLASS_DEFAULT |
|
static java.lang.String |
LDAP_CTX_FACTORY_CLASS_KEY |
|
static java.lang.String |
LDAP_KEYSTORE_DEFAULT |
|
static java.lang.String |
LDAP_KEYSTORE_KEY |
|
static java.lang.String |
LDAP_KEYSTORE_PASSWORD_DEFAULT |
|
static java.lang.String |
LDAP_KEYSTORE_PASSWORD_FILE_DEFAULT |
|
static java.lang.String |
LDAP_KEYSTORE_PASSWORD_FILE_KEY |
|
static java.lang.String |
LDAP_KEYSTORE_PASSWORD_KEY |
|
static int |
LDAP_NUM_ATTEMPTS_BEFORE_FAILOVER_DEFAULT |
|
static java.lang.String |
LDAP_NUM_ATTEMPTS_BEFORE_FAILOVER_KEY |
|
static int |
LDAP_NUM_ATTEMPTS_DEFAULT |
|
static java.lang.String |
LDAP_NUM_ATTEMPTS_KEY |
|
static java.lang.String |
LDAP_TRUSTSTORE_KEY |
File path to the location of the SSL truststore to use
|
static java.lang.String |
LDAP_TRUSTSTORE_PASSWORD_FILE_KEY |
The path to a file containing the password for
the LDAP SSL truststore
|
static java.lang.String |
LDAP_TRUSTSTORE_PASSWORD_KEY |
The key of the credential entry containing the password for
the LDAP SSL truststore
|
static java.lang.String |
LDAP_URL_DEFAULT |
|
static java.lang.String |
LDAP_URL_KEY |
|
static java.lang.Boolean |
LDAP_USE_SSL_DEFAULT |
|
static java.lang.String |
LDAP_USE_SSL_KEY |
|
static java.lang.String |
MEMBEROF_ATTR_DEFAULT |
|
static java.lang.String |
MEMBEROF_ATTR_KEY |
|
static java.lang.String |
POSIX_ACCOUNT |
|
static java.lang.String |
POSIX_GID_ATTR_DEFAULT |
|
static java.lang.String |
POSIX_GID_ATTR_KEY |
|
static java.lang.String |
POSIX_GROUP |
|
static java.lang.String |
POSIX_UID_ATTR_DEFAULT |
|
static java.lang.String |
POSIX_UID_ATTR_KEY |
|
static java.lang.String |
READ_TIMEOUT |
|
static int |
READ_TIMEOUT_DEFAULT |
|
static java.lang.String |
USER_BASE_DN_KEY |
|
static java.lang.String |
USER_SEARCH_FILTER_DEFAULT |
|
static java.lang.String |
USER_SEARCH_FILTER_KEY |
GROUP_MAPPING_CONFIG_PREFIX| Constructor | Description |
|---|---|
LdapGroupsMapping() |
| Modifier and Type | Method | Description |
|---|---|---|
void |
cacheGroupsAdd(java.util.List<java.lang.String> groups) |
Adds groups to cache, no need to do that for this provider
|
void |
cacheGroupsRefresh() |
Caches groups, no need to do that for this provider
|
protected boolean |
failover(int attemptsMadeWithSameLdap,
int maxAttemptsBeforeFailover) |
Check whether we should fail over to the next LDAP server.
|
Configuration |
getConf() |
Return the configuration used by this object.
|
java.util.List<java.lang.String> |
getGroups(java.lang.String user) |
Returns list of groups for a user.
|
java.util.Set<java.lang.String> |
getGroupsSet(java.lang.String user) |
Get all various group memberships of a given user.
|
java.util.Iterator<java.lang.String> |
getLdapUrls() |
Get URLs of configured LDAP servers.
|
void |
setConf(Configuration conf) |
Set the configuration to be used by this object.
|
protected void |
switchBindUser(javax.naming.AuthenticationException e) |
Switch to the next available user to bind to.
|
public static final java.lang.String LDAP_CONFIG_PREFIX
public static final java.lang.String LDAP_URL_KEY
public static final java.lang.String LDAP_URL_DEFAULT
public static final java.lang.String LDAP_USE_SSL_KEY
public static final java.lang.Boolean LDAP_USE_SSL_DEFAULT
public static final java.lang.String LDAP_KEYSTORE_KEY
public static final java.lang.String LDAP_KEYSTORE_DEFAULT
public static final java.lang.String LDAP_KEYSTORE_PASSWORD_KEY
public static final java.lang.String LDAP_KEYSTORE_PASSWORD_DEFAULT
public static final java.lang.String LDAP_KEYSTORE_PASSWORD_FILE_KEY
public static final java.lang.String LDAP_KEYSTORE_PASSWORD_FILE_DEFAULT
public static final java.lang.String LDAP_TRUSTSTORE_KEY
public static final java.lang.String LDAP_TRUSTSTORE_PASSWORD_KEY
public static final java.lang.String LDAP_TRUSTSTORE_PASSWORD_FILE_KEY
public static final java.lang.String BIND_USERS_KEY
public static final java.lang.String BIND_USER_SUFFIX
public static final java.lang.String BIND_USER_KEY
public static final java.lang.String BIND_USER_DEFAULT
public static final java.lang.String BIND_PASSWORD_SUFFIX
public static final java.lang.String BIND_PASSWORD_KEY
public static final java.lang.String BIND_PASSWORD_DEFAULT
public static final java.lang.String BIND_PASSWORD_FILE_SUFFIX
public static final java.lang.String BIND_PASSWORD_FILE_KEY
public static final java.lang.String BIND_PASSWORD_FILE_DEFAULT
public static final java.lang.String BIND_PASSWORD_ALIAS_SUFFIX
public static final java.lang.String BIND_PASSWORD_ALIAS_KEY
public static final java.lang.String BIND_PASSWORD_ALIAS_DEFAULT
public static final java.lang.String BASE_DN_KEY
public static final java.lang.String BASE_DN_DEFAULT
public static final java.lang.String USER_BASE_DN_KEY
public static final java.lang.String GROUP_BASE_DN_KEY
public static final java.lang.String USER_SEARCH_FILTER_KEY
public static final java.lang.String USER_SEARCH_FILTER_DEFAULT
public static final java.lang.String GROUP_SEARCH_FILTER_KEY
public static final java.lang.String GROUP_SEARCH_FILTER_DEFAULT
public static final java.lang.String MEMBEROF_ATTR_KEY
public static final java.lang.String MEMBEROF_ATTR_DEFAULT
public static final java.lang.String GROUP_MEMBERSHIP_ATTR_KEY
public static final java.lang.String GROUP_MEMBERSHIP_ATTR_DEFAULT
public static final java.lang.String GROUP_NAME_ATTR_KEY
public static final java.lang.String GROUP_NAME_ATTR_DEFAULT
public static final java.lang.String GROUP_HIERARCHY_LEVELS_KEY
public static final int GROUP_HIERARCHY_LEVELS_DEFAULT
public static final java.lang.String POSIX_UID_ATTR_KEY
public static final java.lang.String POSIX_UID_ATTR_DEFAULT
public static final java.lang.String POSIX_GID_ATTR_KEY
public static final java.lang.String POSIX_GID_ATTR_DEFAULT
public static final java.lang.String GROUP_SEARCH_FILTER_PATTERN
public static final java.lang.String GROUP_SEARCH_FILTER_PATTERN_DEFAULT
public static final java.lang.String POSIX_GROUP
public static final java.lang.String POSIX_ACCOUNT
public static final java.lang.String DIRECTORY_SEARCH_TIMEOUT
public static final int DIRECTORY_SEARCH_TIMEOUT_DEFAULT
public static final java.lang.String CONNECTION_TIMEOUT
public static final int CONNECTION_TIMEOUT_DEFAULT
public static final java.lang.String READ_TIMEOUT
public static final int READ_TIMEOUT_DEFAULT
public static final java.lang.String LDAP_NUM_ATTEMPTS_KEY
public static final int LDAP_NUM_ATTEMPTS_DEFAULT
public static final java.lang.String LDAP_NUM_ATTEMPTS_BEFORE_FAILOVER_KEY
public static final int LDAP_NUM_ATTEMPTS_BEFORE_FAILOVER_DEFAULT
public static final java.lang.String LDAP_CTX_FACTORY_CLASS_KEY
public static final java.lang.String LDAP_CTX_FACTORY_CLASS_DEFAULT
public java.util.List<java.lang.String> getGroups(java.lang.String user)
getGroups in interface GroupMappingServiceProvideruser - get groups for this userprotected boolean failover(int attemptsMadeWithSameLdap,
int maxAttemptsBeforeFailover)
attemptsMadeWithSameLdap - current number of attempts made
with using same LDAP instancemaxAttemptsBeforeFailover - maximum number of attempts
before failing overprotected void switchBindUser(javax.naming.AuthenticationException e)
e - AuthenticationException encountered when contacting LDAPpublic void cacheGroupsRefresh()
cacheGroupsRefresh in interface GroupMappingServiceProviderpublic void cacheGroupsAdd(java.util.List<java.lang.String> groups)
cacheGroupsAdd in interface GroupMappingServiceProvidergroups - unusedpublic java.util.Set<java.lang.String> getGroupsSet(java.lang.String user)
GroupMappingServiceProvidergetGroupsSet in interface GroupMappingServiceProvideruser - User's namepublic Configuration getConf()
ConfigurablegetConf in interface Configurablepublic void setConf(Configuration conf)
ConfigurablesetConf in interface Configurableconf - configuration to be usedpublic java.util.Iterator<java.lang.String> getLdapUrls()
Copyright © 2008–2025 Apache Software Foundation. All rights reserved.