• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Prog1

C# Como ir buscar grupos da AD

3 mensagens neste tópico

boas...

alguém sabe se é possivel saber se um dado utilizador autenticado na aplicação através de uma Active Directory faz parte de um grupo de utilizadores...

ex: user xpto, grupo de Administradores Locais.

sei que para saber o user é através de HttpContext.Currrent.Identity.Name

obg.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim, obviamente que é possivel.

tenho uma API desenvolvida por mim para gerir a AD.

eis um excerto adaptado do que queres.

tens que "estudar" o System.DirectoryServices para mais implementações.

using System;
using System.DirectoryServices;		
...



     private static DirectoryEntry GetDirectoryObject(string ADPath, string ADUser, string ADPassword)
        {
            return new DirectoryEntry(ADPath, ADUser, ADPassword, AuthenticationTypes.Secure);
        }

    	

     public static string UserGroups(string UserName)
        {
            DirectoryEntry de = null;
            DirectoryEntry deUser = null;
            DirectoryEntry deGroup = null;
            DirectorySearcher deSearch = null;

            string grps = "";

            using (de = GetDirectoryObject("LDAP://192.168.12.23","administrator","pwdadministrator"))
            {

                // Cria uma instância do Directory Searcher
                using (deSearch = new DirectorySearcher())
                {             
                    deSearch.SearchRoot = de;
                    deSearch.Filter = "(&(objectClass=user)(objectCategory=person)(sAMAccountName=" + UserName + "))";
                    deSearch.SearchScope = SearchScope.Subtree;
                 
                    SearchResult results = FindOne(deSearch);

                    if (results != null)
                    {
                        using (deUser = new DirectoryEntry(results.Path, "administrator","pwdadministrator", AuthenticationTypes.Secure))
                        {
                            // Guarda as propriedades dentro de uma variável local
                            System.DirectoryServices.PropertyCollection pcoll = deUser.Properties;
                            
                            for (int i = 0; i < pcoll["memberOf"].Count; i++)
                            {                            
                                using (deGroup = new DirectoryEntry(ADPath + "/" + pcoll["memberOf"][i], "administrator","pwdadministrator", AuthenticationTypes.Secure))
                                {
                                    grps += pcoll["memberOf"][i].ToString() + ",";                                   
                                }
                            }
                            return grps;
                        }
                    }
                    return grps;
                }
            }
        }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora