我有一个应用程序需要登录 AD,然后我必须获取用户的distinguishedName。
我能够使用提供的登录名成功登录到 AD,但是当我尝试在 AD 中搜索用户对象时,查询不会返回任何内容。
我的查询是(这里我假设登录名为 userPrincipleName):
userPrincipleName=user@sub.domain.com
当我进一步研究这个问题时,我发现对于这个用户,我们有 -
用户登录名 = user@sub.domain.com
userPrincipleName = user@domain.com
据我所知,登录名应该与 userPrincipleName 相同。 有人可以告诉我这种情况是否真的可能,其中这两个属性可能不同?
如果可能的话,我如何使用提供的登录名获取用户的distinguishedName?
最佳答案
Active Directory 有许多命名属性:
distinguishedName:这是对象的完整 LDAP DN,例如 cn=Joe Smith、ou=Users、dc=MyDomain、dc=com,并且这在树中必须是唯一的并且是强制执行的,也就是说 cn=Joe Smith 节点在容器中必须是唯一的:ou=Users,dc=MyDomain,dc=com
sAMAccountName:这通常是用户的简称。在域内必须是唯一的并且是强制的。像geoffc 或jsmith。
用户主体名称:这看起来像电子邮件地址,对于 Office 365 将是您的电子邮件地址。 geoffc@mydomain.com 这应该在您的森林中是唯一的,但实际上并没有强制执行唯一性,通过 LDAP,您甚至可以在该字段中写入无意义的内容。在域的根部,您可以定义附加 SPN(服务提供商名称?我认为),然后将其显示在 Active Directory 用户和计算机中作为可能的域扩展添加到用户。然而,尽管 ADUC 将其显示为拆分属性、值和域后缀,但它仍存储为简单的字符串。
displayName:这通常是 Joe Smith,为用户显示的名称。
邮件:用户的实际电子邮件地址,jsmith@mail.mydomain.com。对于 Office365,该值也应位于 UserPrincipalName 中。
因此,决定在登录时可以向用户询问什么,然后查找适当的属性。如果不使用 Office 365,UPN 实际上是最不可靠的使用值。
关于java - Active Directory userPrincipleName 与用户登录名不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42832709/