在我们公司中,存在一个全林范围的 UPN 后缀company.com
,并且几乎所有用户帐户都将显式 UPN 设置为[email protected]
。此值也在 Active Directory 属性中设置userPrincipalName
。
现在我们有一个应用程序,用户通过 Kerberos 执行身份验证。因此,我们获得了 Kerberos 主体,即隐式 UPN。我们想查找该用户并检索几个 LDAP 属性。由于 iUPN 和userPrincipalName
不再匹配,因此无法进行查找。
是否有任何“官方”方法可以从 Active Direcory 检索映射?我的解决方法是对领域组件执行 LDAP 绑定,并搜索与sAMAccountName
iUPN 的用户 ID 组件匹配的属性。sAMAccountName
无法在林中搜索 mere,因为该值仅在域中是唯一的。
答案1
执行此操作的方法是针对 sAMAccountName 和 userPrincipalName 执行 LDAP 查询。例如:( &(sAMAccountName=uname)(userPrincipalName=*@example.com) ) 将查询用户[电子邮件保护]如果他的 sAMAccountName (我认为是“隐含的 UPN 前缀”) 是 uname。
类似项目广告查找将允许您运行任意 LDAP 查询,例如针对 AD 的查询。
如果您无法依赖 UPN 后缀来匹配域(因为该后缀也被覆盖了),您可以为每个域创建一个 SID 部分列表(用户 SID 的最后一部分除外的每个部分),然后搜索该列表。如果域 example.net 的 SID 部分为 1234-5678-9012,则该域中的所有用户都将拥有以 S-1-5-21-1234-5678-9012- 开头的 SID。如果您有该映射,您可以编写 LDAP 搜索
( &(sAMAccountName=uname)(objectSID=S-1-5-21-1234-5678-9012-*) )