2010-01-08 14 views
6

Czy można zapytać AD z javascript?javascript aktywny katalog użytkownik/grupy zapytanie

Pracuję z poziomu programu SharePoint i mogę uzyskać bieżące informacje użytkownika programu SharePoint za pomocą niektórych js znalezionych na blogu.

Ale zastanawiam się, czy mogę zapytać AD, czy obecny użytkownik jest w określonej grupie AD.

Odpowiedz

4

Myślę, że lepiej byłoby napisać szybką stronę asp.net, którą można wywołać za pośrednictwem AJAX i odzyskać JSON. Klasa usług katalogowych .NET będzie znacznie lepiej rozmawiać z Active Directory niż javascript, chyba że znajdziesz w tym celu bibliotekę js (której nie mogłem znaleźć).

+0

już mam SharePoint zużywa kilka .NET strony internetowe/aplikacje internetowe jako części internetowe. Moją obawą jest to, że program SharePoint zajmuje tak dużo czasu, aby je załadować. – vwfreak

0

Nie ma sposobu, aby wiedzieć, w jaki sposób można uzyskać dostęp do AD ze skryptu klienta. Mógłbym myśleć tylko o jakimś rodzaju kontrolki ActiveX, która spełnia tę funkcję, jednak 1) działałoby tylko w IE 2) byłaby również ograniczona do ustawień strefy w IE.

Tak więc powodem jest to, dlaczego tego potrzebujesz. Najprawdopodobniej, aby móc pokazać użytkownikowi coś lub ukryć coś przed użytkownikiem. W takim przypadku możesz pomyśleć o zastosowaniu rozwiązania "odbiorcy docelowego" do swojej strony (patrz tutaj - http://office.microsoft.com/en-us/sharepointserver/HA101690531033.aspx). Na przykład dodaj dwie wersje witryny do strony, jedną dla użytkowników należących do grupy i drugą dla użytkowników, którzy nie są.

Jeśli naprawdę potrzebujesz mieć te informacje po stronie klienta w JS, możesz utworzyć na serwerze jakiś serwis internetowy "Pomocnik AD" i wywołać tę usługę za pomocą AJAX, zgodnie z postem @ squillmana.

3

To jest trochę późno, ale dla przyszłych gości z Google, musiałem napisać coś w JavaScript, aby naprawić zaplanowanego zadania, który jest uruchamiany z 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

Niezbyt pewien dostęp do WScript –