Active Directory userPrincipleName与用户登录名不同

时间:2017-03-16 11:23:01

标签: java active-directory ldap userprincipal

我有一个应用程序,我需要登录到AD,然后我必须得到用户的 distinguishedName

我已成功使用提供的登录名登录到AD,但是当我尝试在AD中搜索用户对象时,查询不返回任何内容。

我的查询是(这里我假设登录名为userPrincipleName):

userPrincipleName=user@sub.domain.com

当我进一步研究这个时,我发现对于这个用户我们有 -

用户登录名= user@sub.domain.com
userPrincipleName = user@domain.com

据我所知,登录名称应与userPrincipleName 相同。 有人可以告诉我,如果这两种属性可能不同,这种情况是否真的可能发生?

如果有可能,那么如何使用提供的登录名获得用户的 distinguishedName

1 个答案:

答案 0 :(得分:2)

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中的值。

因此,决定在登录时可以询问用户的内容,然后查找相应的属性。 UPN,如果不使用Office 365实际上是最不可靠的值。