javascript活动目录用户/组查询

时间:2010-01-08 20:39:02

标签: javascript sharepoint active-directory

是否可以从javascript查询AD?

我在SharePoint中工作,我可以使用我在博客上找到的一些j来获取当前SharePoint用户的信息。

但我想知道我是否可以查询AD以查看当前用户是否在特定的AD组中。

3 个答案:

答案 0 :(得分:4)

我认为你最好写一个快速的asp.net页面,你可以通过AJAX调用并获得一些JSON。 .NET目录服务类在与Active Directory交谈方面要比javascript好得多,除非你能找到专门用于此的js库(我无法找到)。

答案 1 :(得分:3)

这有点晚了,但对于来自Google的未来访问者,我不得不用JavaScript编写一些内容来修复使用cscript运行的计划任务:

var conn = WScript.CreateObject("ADODB.Connection")
var rootDSE = GetObject("LDAP://RootDSE");
var context = rootDSE.Get("defaultNamingContext");

conn.Provider = "ADsDSOObject";
conn.Open("ADs Provider");

var query = "<LDAP://" + context + ">;(&(objectCategory=person)(objectClass=user));samAccountName;subtree";
var cmd = WScript.CreateObject("ADODB.Command");

cmd.ActiveConnection = conn;
cmd.CommandText = query;
cmd.Properties.Item("SearchScope") = 2;
cmd.Properties.Item("Page Size") = 500;

var r = cmd.Execute();

while(!r.EOF)
{
  for (var e=new Enumerator(r.Fields);!e.atEnd();e.moveNext())
  {
    WScript.Stdout.Write(e.Item().name + "=" + e.Item().value + "  ");
  }
  WScript.Stdout.WriteLine("");

  r.MoveNext();
}

答案 2 :(得分:0)

我无法知道如何从客户端脚本访问AD。我只能想到某种类型的ActiveX控件可以完成这项工作,但是1)只能在IE 2中工作,也只限于IE中的区域设置。

所以,原因就是你需要这个。最有可能的是,能够向用户显示某些内容或向用户隐藏某些内容。如果是这种情况,您可以考虑将“目标受众群体”解决方案应用于您的网页(请参阅此处 - http://office.microsoft.com/en-us/sharepointserver/HA101690531033.aspx)。例如,在页面中添加两个版本的webpart,一个用于组中的用户,另一个用于非用户的用户。

如果你真的需要在JS的客户端获得这些信息,你可以在服务器上创建一些“AD帮助”Web服务,并使用AJAX调用该服务,如@ squillman的帖子。