
Я пытаюсь заставить локальный сервер проходить аутентификацию на своем собственном сервере openldap, а затем проксировать его на корпоративный LDAP, если пользователь не найден локально.
- Локальные пользователи работают
- Авторизация на локальном сервере LDAP работает
- Авторизация в корпоративном LDAP НЕ работает
- Поиск LDAP в корпоративной среде работает при использовании локального сервера (подтверждение!?!)
пользователь = корпоративная учетная запись LDAP внутренний ldap = пользователи - internal.com корпоративный ldap = люди - datacenter.corporate.com
Примечание: анонимная привязка включена в корпоративной среде.
oot@ sssd]# ldapsearch -h 127.0.0.1 -x -b "uid=user,ou=people,dc=datacenter,dc=corporate,dc=com"
# extended LDIF
#
# LDAPv3
# base <uid=user,ou=people,dc=datacenter,dc=corporate,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# user, People, datacenter.corporate.com
dn: uid=user,ou=People,dc=datacenter,dc=corporate,dc=com
uid: user
cn:
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
shadowMax:
shadowWarning:
loginShell: /bin/bash
uidNumber:
gidNumber:
homeDirectory: /home/users/user
gecos: user
shadowLastChange: 16461
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
Настройка slap.d:
#######################################################################
# database definitions
#######################################################################
database bdb
suffix "dc=internal,dc=com"
checkpoint 1024 15
rootdn "cn=adm,dc=internal,dc=com"
rootpw {SSHA}aaaaa
directory /var/lib/ldap
# Indices to maintain for this database
index objectClass eq,pres
index ou,cn,mail,surname,givenname eq,pres,sub
index uidNumber,gidNumber,loginShell eq,pres
index uid,memberUid eq,pres,sub
index nisMapName,nisMapEntry eq,pres,sub
# Replicas of this database
#replogfile /var/lib/ldap/openldap-master-replog
#replica host=ldap-1.example.com:389 starttls=critical
# bindmethod=sasl saslmech=GSSAPI
# authcId=host/[email protected]
#proxy ldap
database ldap
suffix "ou=People,dc=datacenter,dc=corp,dc=com"
uri "ldap://1.1.1.1:389/"
idassert-bind bindmethod=none
ldap.conf:
URI ldap://127.0.0.1
BASE dc=internal,dc=com
решение1
обновление для тех, кто может найти эту ветку; документации openldap крайне не хватает для настройки прокси. Это было найдено в основном за 48 часов проб и ошибок.
Примечание: я переключился обратно на slapd.conf, добавив следующее в /etc/sysconfig/ldap SLAPD_OPTIONS="-f /etc/openldap/slapd.conf"
В файле slapd вы найдете 4 базы данных: 1. локальная база данных для LDAP AUTH (test.com) 2. внешний коннектор базы данных для LDAP AUTH (external.local -> corp.com) 3. внутренний коннектор базы данных для LDAP AUTH (internal.local -> test.com) 4. метабаза данных, которая объединяет 2 коннектора в 1 базу данных
Анонимная привязка везде; это упрощает задачу.
Теперь клиенты указывают на локальную базу данных LDAP и могут беспрепятственно проходить AUTH либо в локальном LDAP, либо в корпоративном LDAP.
slapd.conf
#local database
database bdb
suffix "dc=test,dc=com"
checkpoint 1024 15
rootdn "cn=adm,dc=test,dc=com"
rootpw {SSHA}aaa
directory /var/lib/ldap
#Indices to maintain for this database
index objectClass eq,pres
index ou,cn,mail,surname,givenname eq,pres,sub
index uidNumber,gidNumber,loginShell eq,pres
index uid,memberUid eq,pres,sub
index nisMapName,nisMapEntry eq,pres,sub
#database meta
database meta
suffix "dc=local"
rootdn "cn=adm,dc=local"
rootpw {SSHA}aaa
#dir1
uri "ldap://corporate-ldap.com/ou=external,dc=local"
lastmod off
suffixmassage "ou=external,dc=local" "dc=datacenter,dc=corp,dc=com"
#dir2
uri "ldap://127.0.0.1/ou=internal,dc=local"
lastmod off
suffixmassage "ou=internal,dc=local" "dc=test,dc=com"