如何使用 ldap 代理 + nslcd 处理来自不同域的重复 AD 用户名进行身份验证

如何使用 ldap 代理 + nslcd 处理来自不同域的重复 AD 用户名进行身份验证

我有一个场景,其中有一台 ubuntu 机器用作 ldap 代理,使用 ldap 作为后端,我有两台 Windows 机器 2008 r2 具有活动目录,每个都有不同的域abc.com 和 xyz.com

两者不同,每个都有唯一的用户名。

但也许两个广告中可能有相同的用户名,比如用户名abc.com 中的 test_ad1&相同的用户名xyz.com 中的 test_ad1用户属性中的 unix 属性选项卡具有不同的 uid/gid。

那么如何处理来自不同 AD 的重复用户进行身份验证呢?

到目前为止,我已经尝试过,即使用 nslcd、pam 设置正确的 ldap 代理,我能够分别获取两个 AD 用户,即通过使用 “获取密码”我的 ubuntu 代理机器上的命令,显示用户喜欢

test_ad3:*:20001:666:test ad3:/home/test_ad3:/bin/bash      // this users are of ad1 (abc.com)
test_ad4:*:20002:666:test ad4:/home/test_ad4:/bin/bash      // this users are of ad1 (abc.com)
test_ad1:*:20003:666:test ad11:/home/test_ad1:/bin/bash     // this users are of ad1 (abc.com)   password at AD1 is 123@test
test_ad1:*:10010:777:test ad1:/home/test_ad1:/bin/bash      // this users are of ad2 (xyz.com)   password at AD2 is test@1234
test_ad2:*:10011:777:test ad2:/home/test_ad2:/bin/bash      // this users are of ad2 (xyz.com)

正如我们所看到的,所有用户都有不同的 uid/gid,即它们是唯一的。

因此,为了进行身份验证,我尝试在我的 ubuntu ldap 代理计算机上使用单独的域名,但失败了,

1) su abc.com\\test_ad1---> auth.log shows me "No passwd entry for user test_ad1"
2) su xyz.com\\test_ad1---> auth.log shows me "No passwd entry for user test_ad1"

但当我只尝试苏测试_ad1& 输入第一个广告(abc.com)的密码,即123@测试比它登录成功并且当我输入第二个广告(xyz.com)的密码时测试@1234对于同样的苏测试_ad1比它显示的su: 身份验证失败”虽然密码不同在 cli 上。

我想是因为其他test_ad1(10011:777即ad2用户)紧接着test_ad1(20003:666即ad1用户)获取密码列表,这可能是由于顺序工作行为NSCD我猜,如有错误请指正。

这是我的 slapd.conf

################ LDAP MULTIPLE BACK END ##########
######## 1st AD ##########
moduleload     back_ldap
backend        ldap
database       ldap
suffix         "dc=ad2,dc=com"
uri            ldap://192.168.1.189:389/
rebind-as-user
idassert-bind bindmethod=SIMPLE binddn="CN=Administrator,CN=Users,DC=ad2,DC=com" credentials=Admin@1234
#mode=none
idassert-authzFrom "*"
access to * by * read
moduleload rwm.la
overlay rwm
rwm-map attribute uid sAMAccountName
rwm-map attribute homeDirectory unixHomeDirectory
rwm-map objectClass posixAccount person
######## 1st AD ##########

######## 2nd AD ##########
database       ldap
suffix         "dc=ad1,dc=com"
uri            ldap://192.168.1.185:389/
rebind-as-user
idassert-bind bindmethod=SIMPLE binddn="CN=Administrator,CN=Users,DC=ad1,DC=com" credentials=Admin@1234
#mode=none
idassert-authzFrom "*"
access to * by * read
overlay rwm
rwm-map attribute uid sAMAccountName
rwm-map attribute homeDirectory unixHomeDirectory
rwm-map objectClass posixAccount person

######## 2nd AD ##########

这是 nslcd.conf

# Mappings for Active Directory
pagesize 1000
referrals off
#nss_nested_groups yes

# Passwd
filter passwd (&(objectClass=posixAccount)(objectClass=USER)(!(objectClass=computer))(uidNumber=*))
map   passwd homeDirectory     unixHomeDirectory
map   passwd gecos             displayName
map   passwd gidNumber         primaryGroupID
map   shadow uid               sAMAccountName


# Shadow
filter shadow (&(objectClass=posixAccount)(!(objectClass=computer))(uidNumber=*))
map    shadow shadowLastChange  pwdLastSet

# Groups
filter group (&(objectClass=posixGroup)(gidNumber=*))
#map    group uniqueMember       member

# Local account for nsclcd
uid nslcd
gid openldap

# Where is the LDAP Proxy
#LDAP
uri ldap://192.168.1.186:389  
base dc=ad1,dc=com
base dc=ad2,dc=com

#Note when i change base to reverse order than user test_ad1 logon successfully with ad2 password and ad1 password fails
#base dc=ad2,dc=com
#base dc=ad1,dc=com

base group ou=Groups,dc=ad1,dc=com
base group ou=Groups,dc=ad2,dc=com


# Connect-Account of ad1
binddn cn=administrator,cn=Users,dc=ad1,dc=com
bindpw Admin@1234

# Connect-Account of ad2
binddn cn=administrator,cn=Users,dc=ad2,dc=com
bindpw Admin@1234

注:我关注用于验证 1 AD 的 LDAP 代理的文档。

我是新手&我知道这可能有些令人困惑!

那么任何 LDAP/AD 专家都可以帮助处理这种类型的场景吗?

任何帮助,将不胜感激。谢谢。

相关内容