Usuário com melhor resposta
verificar se o Nome existe no active directory

Pergunta
-
boa tarde pessoal,
quero verificar se um nome esta no active directory. como posso fazer?
meu cenario é o seguinte:
tenho uma aplicação web que fiz no visual studio 2010 com base de dados SQL Server, e permito a autenticação na minha aplicação atraves do active directory.
tenho uma tabela onde vou inserir alguns utilizadores e as suas permissoes. mais quero que antes que seja inserido um utilizador, para o sistema verificar se o utilizador inserido existe ou não no active directory.
a minha grande duvida é como verificar se o user existe no active directory.
Respostas
-
Boa tarde.
Segue rotina:
public class Informacoes { public string Displayname { get; set; } public string Telephonenumber { get; set; } public string Mail { get; set; } public string Title { get; set; } public string Department { get; set; } public string Physicaldeliveryofficename { get; set; } public string Info { get; set; } public string Login { get; set; } }
public Informacoes RetornaDadosUsuario(string identify) { List<Informacoes> listaDeIformacoes = new List<Informacoes>(); Informacoes objInformacoes = new Informacoes(); string[] domainUser = identify.Split("\\".ToCharArray()); string domain = domainUser[0]; string userName = domainUser[1]; try { //inicio AD DirectoryEntry adRoot = new DirectoryEntry(); DirectorySearcher directorySearcher = new DirectorySearcher(adRoot); directorySearcher.Filter = String.Format("(&(objectCategory=Person)(objectClass=User)(samaccountname={0}*))", userName); SearchResult result = directorySearcher.FindOne(); if (result == null) { // Erro, não encontrado //errologin.Visible = true; } else { DirectoryEntry de = result.GetDirectoryEntry(); objInformacoes.Login = userName; objInformacoes.Displayname = getActiveDirectoryProperty(de, "displayname").ToString(); objInformacoes.Telephonenumber = getActiveDirectoryProperty(de, "telephonenumber").ToString(); objInformacoes.Mail = getActiveDirectoryProperty(de, "mail").ToString(); objInformacoes.Title = getActiveDirectoryProperty(de, "title").ToString(); objInformacoes.Department = getActiveDirectoryProperty(de, "department").ToString(); objInformacoes.Physicaldeliveryofficename = getActiveDirectoryProperty(de, "physicaldeliveryofficename").ToString(); objInformacoes.Info = getActiveDirectoryProperty(de, "info").ToString(); listaDeIformacoes.Add(objInformacoes); } //final AD return objInformacoes; } catch (Exception ex) { return null; throw; } }
Consultoria .NET
ANALISTA DESENVOLVEDOR
Se esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como resposta.- Marcado como Resposta desabi sexta-feira, 17 de fevereiro de 2012 12:42
-
obrigado pessoal, consegi fazer dessa forma
// função que verifica se um user existe no active directory
protected int Verifica_Existe_AD(string nome)
{
int verifica = 0;
string identify_user = "MEUDOMINIO\\" + nome + "";
string[] domainUser = identify_user.Split("\\".ToCharArray());
string domain = domainUser[0];
string userName = domainUser[1];
try
{
//inicio AD
DirectoryEntry adRoot = new DirectoryEntry();
DirectorySearcher directorySearcher = new DirectorySearcher(adRoot);directorySearcher.Filter = String.Format("(&(objectCategory=Person)(objectClass=User)(samaccountname={0}*))", userName);
SearchResult result = directorySearcher.FindOne();
if (result == null)
verifica = 0;else
verifica = 1;
}
catch (Exception ex)
{
}
return verifica;
}- Marcado como Resposta desabi sexta-feira, 17 de fevereiro de 2012 12:42
Todas as Respostas
-
Boa tarde.
Segue rotina:
public class Informacoes { public string Displayname { get; set; } public string Telephonenumber { get; set; } public string Mail { get; set; } public string Title { get; set; } public string Department { get; set; } public string Physicaldeliveryofficename { get; set; } public string Info { get; set; } public string Login { get; set; } }
public Informacoes RetornaDadosUsuario(string identify) { List<Informacoes> listaDeIformacoes = new List<Informacoes>(); Informacoes objInformacoes = new Informacoes(); string[] domainUser = identify.Split("\\".ToCharArray()); string domain = domainUser[0]; string userName = domainUser[1]; try { //inicio AD DirectoryEntry adRoot = new DirectoryEntry(); DirectorySearcher directorySearcher = new DirectorySearcher(adRoot); directorySearcher.Filter = String.Format("(&(objectCategory=Person)(objectClass=User)(samaccountname={0}*))", userName); SearchResult result = directorySearcher.FindOne(); if (result == null) { // Erro, não encontrado //errologin.Visible = true; } else { DirectoryEntry de = result.GetDirectoryEntry(); objInformacoes.Login = userName; objInformacoes.Displayname = getActiveDirectoryProperty(de, "displayname").ToString(); objInformacoes.Telephonenumber = getActiveDirectoryProperty(de, "telephonenumber").ToString(); objInformacoes.Mail = getActiveDirectoryProperty(de, "mail").ToString(); objInformacoes.Title = getActiveDirectoryProperty(de, "title").ToString(); objInformacoes.Department = getActiveDirectoryProperty(de, "department").ToString(); objInformacoes.Physicaldeliveryofficename = getActiveDirectoryProperty(de, "physicaldeliveryofficename").ToString(); objInformacoes.Info = getActiveDirectoryProperty(de, "info").ToString(); listaDeIformacoes.Add(objInformacoes); } //final AD return objInformacoes; } catch (Exception ex) { return null; throw; } }
Consultoria .NET
ANALISTA DESENVOLVEDOR
Se esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como resposta.- Marcado como Resposta desabi sexta-feira, 17 de fevereiro de 2012 12:42
-
-
DirectoryEntry DirectorySearcher SearchResult
pessoal tenho que criar essas class? porque estas palavras não são reconhecidas. se tenho que criar vão ficar vazias?
Não esqueça de usar o componente </> na barra para posta seu código. Microsoft MCPD,MCTS,MCC
-
-
-
-
-
obrigado pessoal, consegi fazer dessa forma
// função que verifica se um user existe no active directory
protected int Verifica_Existe_AD(string nome)
{
int verifica = 0;
string identify_user = "MEUDOMINIO\\" + nome + "";
string[] domainUser = identify_user.Split("\\".ToCharArray());
string domain = domainUser[0];
string userName = domainUser[1];
try
{
//inicio AD
DirectoryEntry adRoot = new DirectoryEntry();
DirectorySearcher directorySearcher = new DirectorySearcher(adRoot);directorySearcher.Filter = String.Format("(&(objectCategory=Person)(objectClass=User)(samaccountname={0}*))", userName);
SearchResult result = directorySearcher.FindOne();
if (result == null)
verifica = 0;else
verifica = 1;
}
catch (Exception ex)
{
}
return verifica;
}- Marcado como Resposta desabi sexta-feira, 17 de fevereiro de 2012 12:42