Conexao AD com Asp.Net C
03/04/2013
0
boa tarde!
Estou precisando fazer uma interação entre meu webform com AD, ou seja uma tela de login que autentica no active directory para validar os usuários. Já fiz algumas pesquisas e encontrei alguns materiais mas ainda assim to um pouco perdido por ser iniciante nessa tecnologia.
Eu preciso que quando o usuário entrar com as credenciais (Login e Senha) ao clicar em logar seja feita uma analista se esta ok e uma condicional que se ele pertencer ao grupo gerente, ele seja direcionado para a pagina gerente.aspx e se for usuário comum usuario.aspx... alem disso preciso que fique em sessão alguns dados vindos do AD para utilizar em consultas ao BD.
Suponhamos que o Gerente de TI logou na aplicação foi validado e direcionado para a pagina gerenteTI.aspx, com isso ele precisa fazer a pesquisa em Banco sobre informações dos seus subordinados.
O comando abaixo valida o usuário no AD porem eu gostaria de direcionar e guarda alguns campos em variáveis ou sessões para utilizar posteriormente.
using System; using System.Collections.Generic; using System.Text; using System.Data.SqlClient; using System.Data; using System.DirectoryServices; namespace ActiveDirectory { public class AuthoAD { public string Autentica(string IpServer, string User, string Senha) { string retorno = string.Empty; try { DirectoryEntry objAD = new DirectoryEntry("LDAP://" + IpServer, User, Senha); retorno = objAD.Name; } catch (Exception ex) { throw new Exception(ex.Message); } return retorno; } } } using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using ActiveDirectory; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void btLogar_Click(object sender, EventArgs e) { AuthoAD objAD = new AuthoAD(); try { Response.Write(objAD.Autentica("anuket", txtUser.Text, txtSenha.Text) + "<br>"); } catch (Exception ex) { Response.Write(ex.Message); } } }
Esse código foi tirado do próprio site Devmedia.
Carlos Arruda
Posts
03/04/2013
Valter Furtado
private bool validarUsuario(String strLogin, String strSenha) { bool valid = false; try { DirectoryEntry ad = new DirectoryEntry(FWEtiquetaZebra.Data_Object.DaoConexao.strDominioApp, strLogin, strSenha); if (ad.NativeObject != null) { System.DirectoryServices.DirectorySearcher mySearcher = new System.DirectoryServices.DirectorySearcher(ad); mySearcher.PropertiesToLoad.Add("sAMAccountName"); mySearcher.PropertiesToLoad.Add("name"); mySearcher.PropertiesToLoad.Add("cn"); mySearcher.PropertiesToLoad.Add("objectClass"); mySearcher.PropertiesToLoad.Add("mail"); mySearcher.PropertiesToLoad.Add("department"); mySearcher.PropertiesToLoad.Add("company"); mySearcher.Filter = ("(sAMAccountName= " + strLogin + ")"); foreach (System.DirectoryServices.SearchResult result in mySearcher.FindAll()) { //LoginInformacoes.StrNome = result.GetDirectoryEntry().InvokeGet("cn") as string; LoginInformacoes.LoginUsuario = result.GetDirectoryEntry().InvokeGet("sAMAccountName") as string; //LoginInformacoes.StrEmail = result.GetDirectoryEntry().InvokeGet("mail") as string; //LoginInformacoes.StrSetor = result.GetDirectoryEntry().InvokeGet("department") as string; } LoginInformacoes.Carregar(); valid = true; } } catch (Exception ex) { valid = false; } return valid; }
03/04/2013
Carlos Arruda
Onde voce direciona o usuario para a pagina que ele pode acessar, esse ai faz a validação nao é?
Vc guarda as info vindas do AD em sessao para ser utilizada posteriormente?
Esse codigo que postei tambem faz a validaçao e retorna falso ou verdadeiro... gostaria alem disso ele direcionar para a pagina correta e guarda em sessao ou variavel as info vindas do AD.
03/04/2013
Valter Furtado
a principio esse código q postei é pra desktop, uma ação do botão de login chama este método...
o que faria se fosse você era vincular os cargos que você tem no AD com uma tabela no banco de dados onde determinado cargo vai redirecionar para determinada página... ou deixa estático na própria página.
Daí vc pode fazer um CASE, por exemplo:
string strDestino = "~/"; switch (VariavelDoCARGO) { case "Gerente de TI": strDestino += "gerenteTI.aspx"; case "Gerente de Compras": strDestino += "gerenteCompras.aspx"; default: strDestino += "PaginaPadrao.aspx"; } Response.Redirect(strDestino);
mas você coloca isso depois que validar no AD e retornar o CARGO.
04/04/2013
Carlos Arruda
04/04/2013
Valter Furtado
21/08/2013
José
Caso contrario sinalize que reabro ou tópico ou fique a vontade para criar um novo tópico.
Clique aqui para fazer login e interagir na Comunidade :)