2010-01-08 39 views
6

¿Es posible consultar AD desde javascript?javascript active directory usuario/grupos consulta

Estoy trabajando desde SharePoint, y puedo obtener la información actual del usuario de SharePoint usando algunos js que encontré en un blog.

Pero me pregunto si puedo consultar AD para ver si el usuario actual está en un grupo de AD específico.

Respuesta

4

Creo que sería mejor que escribieras una página rápida de asp.net a la que pudieses llamar a través de AJAX y recuperar un poco de JSON. La clase de servicios de directorio .NET va a ser mucho mejor para hablar con Active Directory que javascript, a menos que pueda encontrar una biblioteca js específicamente para esto (que no he podido encontrar).

+0

que ya tienen SharePoint consumir unos pocos .NET páginas web/aplicaciones web como elementos web. Mi preocupación es que SharePoint demora tanto en cargarlos. – vwfreak

0

No hay manera de saber cómo se puede acceder a AD desde un script de cliente. Solo podía pensar en algún tipo de control ActiveX que hiciera el trabajo, sin embargo, que 1) solo funcionaría en IE 2) también estaría limitado a la configuración de zona en IE.

Entonces, la razón es por qué usted necesita esto. Lo más probable es que sea capaz de mostrarle algo al usuario u ocultarle algo al usuario. Si este es el caso, podría pensar en aplicar la solución de "público objetivo" a su página (consulte aquí - http://office.microsoft.com/en-us/sharepointserver/HA101690531033.aspx). Por ejemplo, agregue dos versiones de su sitio web a la página, una para usuarios que están en el grupo y otra para usuarios que no lo son.

Si realmente necesita tener esta información en el lado del cliente en JS, puede crear un servicio web "AD helper" en su servidor y llamar a ese servicio utilizando AJAX, según la publicación de @ squillman.

3

Esto es un poco tarde, pero para los futuros visitantes de Google, que tenía que escribir algo en JavaScript para fijar una tarea programada que se ejecuta con 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

No estoy seguro del acceso a WScript –

Cuestiones relacionadas