javascript - GetUserProfileByName 属性不一致

标签 javascript active-directory user-profile

我只是想使用 GetUserProfileByName 服务从 AD 获取用户的一些详细信息。为此,我选择使用 javascript。经过一些研究和大量修改后,我设法连接到网络服务并成功检索数据。

我使用一个简单的 if 语句来比较属性的“名称”,以获得我想要的特定值。

if(xmlDoc.getElementsByTagName("Name")[i].childNodes[0].nodeValue == "Department")
{
    property = xmlDoc.getElementsByTagName("Value")[i].childNodes[0].nodeValue;
}

此时我开始注意到一些差异。我似乎没有得到我在比较中指定的属性。例如,如果我指定“部门”,它会返回电子邮件。经过一番挣扎后,我最终决定将所有“名称”和“值”字段放入两个数组中,不进行任何比较,并将它们并排显示。

for(i = 0; i < 13 ; i++)
{
    description[i] = xmlDoc.getElementsByTagName("Name")[i].childNodes[0].nodeValue;
    elements[i] = xmlDoc.getElementsByTagName("Value")[i].childNodes[0].nodeValue;
}

我由此得出的结论是,这两个字段显然彼此不匹配:

UserProfile_GUID: 65f017dc-b892-4afa-8730-5e8f73aa7b86
AccountName: CAPETOWN\ANEL5
FirstName: Abraham
SPS-PhoneticFirstName: Nel
LastName: Abraham Nel
SPS-PhoneticLastName: 021 ### ####
PreferredName: CRS - Info Sys & Tech
SPS-PhoneticDisplayName: Contractor
WorkPhone: Contractor
Department: ANEL5
Title: CN=Abraham Nel,OU=Standard,OU=Users,OU=End-User Services,DC=###,DC=###,DC=###
SPS-JobTitle: ###@###.###
Manager: Cape Town Civic Centre Podium Block

知道为什么会这样吗?

尝试将整个 XML 文档解析为字符串的结果:

falsefalseUserProfile_GUIDNotSetb21ec99c-2ad9-40a8-9d45-a3273c92ee5afalsefalseAccountNameNotSetCAPETOWN\AHEYNESfalsefalseFirstNameNotSetAshleyfalsefalseSPS-PhoneticFirstNameNotSetfalsefalseLastNameNotSetHeynesfalsefalseSPS-PhoneticLastNameNotSetfalsefalsePreferredNameNotSetAshley HeynesfalsefalseSPS-PhoneticDisplayNameNotSetfalsefalseWorkPhoneNotSet021 400 ####falsefalseDepartmentNotSetCRS - Info Sys & TechfalsefalseTitleNotSetAssistant Professional OfficerfalsefalseSPS-JobTitleNotSetAssistant Professional OfficerfalsefalseManagerNotSetCAPETOWN\DSISSINGfalsefalseAboutMeNotSetfalsefalsePersonalSpaceNotSetfalsefalsePictureURLNotSetfalsefalseUserNameNotSetAHEYNESfalsefalseQuickLinksNotSetfalsefalseWebSiteNotSetfalsefalsePublicSiteRedirectNotSetfalsefalseSPS-Dotted-lineNotSetfalsefalseSPS-PeersNotSetfalsefalseSPS-ResponsibilityNotSetfalsefalseSPS-SipAddressNotSetfalsefalseSPS-MySiteUpgradeNotSetfalsefalseSPS-ProxyAddressesNotSetfalsefalseSPS-HireDateNotSetfalsefalseSPS-DisplayOrderNotSetfalsefalseSPS-ClaimIDNotSetfalsefalseSPS-ClaimProviderIDNotSetfalsefalseSPS-ClaimProviderTypeNotSetfalsefalseSPS-SavedAccountNameNotSetfalsefalseSPS-ResourceAccountNameNotSetfalsefalseSPS-ObjectExistsNotSetfalsefalseSPS-MasterAccountNameNotSetfalsefalseSPS-DistinguishedNameNotSetCN=Ashley Heynes,OU=Developers,OU=Users,OU=End-User Services,DC=##,DC=##,DC=##falsefalseSPS-SourceObjectDNNotSetfalsefalseWorkEmailNotSet##.##@##.##.##falsefalseCellPhoneNotSetfalsefalseFaxNotSetfalsefalseOfficeNotSetCape Town Paul Sauer BuildingfalsefalseSPS-LocationNotSetfalsefalseSPS-TimeZoneNotSetfalsefalseAssistantNotSetfalsefalseSPS-PastProjectsNotSetfalsefalseSPS-SkillsNotSetfalsefalseSPS-SchoolNotSetfalsefalseSPS-BirthdayNotSetfalsefalseSPS-StatusNotesNotSetfalsefalseSPS-InterestsNotSetfalsefalseSPS-EmailOptinNotSet

最佳答案

四处搜索,似乎 XML 结构不适合您正在使用的逻辑。 XML 如下所示:

PropertyData*
    Name
    Values
        ValueData
            Value

我不确定每个的基数,但我认为迭代 xmlDoc.getElementsByTagName('PropertyData') 然后找到 Name 和该 block 中的(可能是多个)Value 元素。

var properties = xmlDoc.getElementsByTagName("PropertyData");

for (var i = 0, item; item = properties[i]; ++i) {
    // search for Name and Value inside here
}

更新

这很可能是由 FirstName 的多个值引起的:AbrahamNelAbraham Nel

关于javascript - GetUserProfileByName 属性不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12933656/

相关文章:

azure - 未找到领域(ACS、ADDS、AD FS)

c# - 远程验证用户的凭据

java - 如何在谷歌登录另一个 Activity 后保存谷歌个人资料

asp.net-mvc - 用户个人资料图片 asp.net mvc 身份

javascript - Twitter 分享计数网址不起作用。寻找替代方案

Javascript 仅在元素进入视口(viewport)后的一段时间内向元素添加类

django 身份验证 ldap

google-chrome - 如何以编程方式创建Chrome个人资料?

javascript - 我的显示/隐藏发生在所有循环结果中,而不是单击一次

javascript - 如何将 PHP 的输出显示为 HTML