2010-01-08 82 views
6

是否有可能從javascript查詢AD?javascript活動目錄用戶/組查詢

我正在從SharePoint內部工作,我可以使用我在博客上找到的一些js獲取當前SharePoint用戶的信息。

但我想知道如果我可以查詢AD,看看當前用戶是否在特定的AD組。

回答

4

我認爲你最好寫一個快速的asp.net頁面,你可以通過AJAX調用並獲得一些JSON。 .NET目錄服務類在與Active Directory聊天方面要比javascript好得多,除非你能找到專門用於此的js庫(我一直無法找到它)。

+0

我已經讓SharePoint消耗幾個.NET網頁/網絡應用程序作爲Web部件。 我擔心SharePoint需要很長時間來加載它們。 – vwfreak

0

我無法知道人們如何從客戶端腳本訪問AD。我只能想到某種類型的ActiveX控件可以完成這項工作,但是1)只能在IE 2中工作)也僅限於IE中的區域設置。

所以,原因是你爲什麼需要這個。最有可能的是,能夠向用戶顯示某些內容或隱藏用戶的內容。如果是這種情況,您可以考慮將「目標受衆」解決方案應用於您的頁面(請參閱此處 - http://office.microsoft.com/en-us/sharepointserver/HA101690531033.aspx)。例如,將Web部件的兩個版本添加到該頁面,一個用於組中的用戶,另一個用於不是的用戶。

如果您確實需要在JS中的客戶端上提供這些信息,您可以在服務器上創建一些「AD助手」Web服務,並使用AJAX調用該服務,如@ squillman的帖子所示。

3

這是一個有點晚,但對於谷歌從未來的訪客,我不得不使用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

不太確定訪問WScript –