是否可以从javascript查询AD?
我在SharePoint中工作,我可以使用我在博客上找到的一些j来获取当前SharePoint用户的信息。
但我想知道我是否可以查询AD以查看当前用户是否在特定的AD组中。
答案 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的帖子。