在我们公司存在一个全林的UPN后缀company.com ,几乎所有的用户帐户都将显式的UPN设置为[email protected] 。 该值也在Active Directory userPrincipalName属性中设置。
现在我们有一个应用程序,用户通过Kerberos执行身份validation。 所以我们给了Kerberos主体,即隐含的UPN。 我们希望查找该用户并检索多个LDAP属性。 由于iUPN和userPrincipalName不匹配,查找是不可能的。
是否有任何“官方”的方式来检索从活动Direcory映射? 我的解决方法是针对领域组件执行LDAP绑定,并search与iUPN的用户ID组件匹配的sAMAccountName属性。 在林中search单纯的sAMAccountName是不可能的,因为该值在域中是唯一的。
这样做的方法是对sAMAccountName和userPrincipalName执行LDAP查询。 例如:(&(sAMAccountName = uname)(userPrincipalName = * @ example.com))将查询用户[email protected]如果他的sAMAccountName(“隐含的UPN前缀”我想)是uname。
adfind等程序将允许您针对AD运行任意的LDAP查询,例如这个。
如果您不能依赖UPN后缀来匹配域,因为它也被覆盖,您可以创build每个域的SID部分列表(除最后一部分外,用户的SID的每个部分),然后search那。 如果域example.net的SID部分为1234-5678-9012,则该域中的用户都将具有以S-1-5-21-1234-5678-9012-开头的SID。 如果你有这个映射,你可以写一个LDAPsearch
( &(sAMAccountName=uname)(objectSID=S-1-5-21-1234-5678-9012-*) )