none
Alterar campos Active Directory Acesso negado ao alterar campos após hospedar RRS feed

  • Pergunta

  • Boa tarde a todos,

    Criei um formulário onde um usuário comum pode realizar a consulta e alterar alguns campos do Active Directory, executando direto do vs2010 consigo alterar sem problemas, mas quando executo o projeto direto do servidor web recebo uma mensagem de retorno do servidor de domínio de acesso negado para alterar os campos.

    Segue o codigo que estou utilizando para alterar os campos!

    protected void btnSubmit_Click(object sender, EventArgs e)
        {
    
            string connection = ConfigurationManager.ConnectionStrings["ADConnectionString"].ToString();
            DirectorySearcher dssearch = new DirectorySearcher(connection);        
            dssearch.Filter = "(sAMAccountName=" + usuario + ")";
            SearchResult sresult = dssearch.FindOne();        
            DirectoryEntry dsresult = new DirectoryEntry(connection);
            dsresult = sresult.GetDirectoryEntry();
            
            try
            {
           
            dsresult.Properties["telephoneNumber"][0] = txtTelefone.Text;
            dsresult.Properties["homePhone"].Value = txtTelefoneHome.Text;
            dsresult.Properties["mobile"].Value = txtCelular.Text;
            dsresult.Properties["ipPhone"].Value = txtRamal..Text;
            dsresult.Properties["title"].Value = txtCargo.Text;
            dsresult.Properties["info"].Value = txtAtendimento.Text;
    
            dsresult.CommitChanges();
    
            }
            catch (Exception ex)
            {
    
                lblerro.Text = ex.Message;
            }
            
    
    
        }

    Mas pelo que andei pesquisando tem acho que tem a ver com a configuração do iis autenticação anonima.

    Desde já agradeço pela atenção!


    quarta-feira, 25 de fevereiro de 2015 19:23

Respostas

  • Marcio,

    Se sua aplicação está usando o ApplicationPool com as configurações padrões, não vai dar certo porque o usuário do ApplicationPool é um usuário local do servidor e não tem permissão para acessar o AD. 

    Você pode fazer duas coisas:

    A) Passar o usuário e a senha na conexão com o servidor AD

    DirectoryEntry dsresult = new DirectoryEntry(connection,dominioEUsuario,senha);

    Exemplo:

    DirectoryEntry dsresult = new DirectoryEntry("LDAP://CN=users,DC=fabrikam,DC=com","fabriak\username","password");

    B) Associar uma conta de usuário administrador do AD no ApplicationPool

    1. Selecione o ApplicationPool da sua aplicação (recomendável utilizar um exclusivo para aplicação);
    2. em Actions, clique em Advanced Settings;
    3. Clique no campo Identity e depois no botão "...";
    4. Selecione Custom account;
    5. Defina o usuário administrador do AD;



    Carlos Eduardo Ferreira

    • Marcado como Resposta Marcio Camargo quinta-feira, 26 de fevereiro de 2015 19:14
    quinta-feira, 26 de fevereiro de 2015 11:51

Todas as Respostas

  • Marcio,

    Se sua aplicação está usando o ApplicationPool com as configurações padrões, não vai dar certo porque o usuário do ApplicationPool é um usuário local do servidor e não tem permissão para acessar o AD. 

    Você pode fazer duas coisas:

    A) Passar o usuário e a senha na conexão com o servidor AD

    DirectoryEntry dsresult = new DirectoryEntry(connection,dominioEUsuario,senha);

    Exemplo:

    DirectoryEntry dsresult = new DirectoryEntry("LDAP://CN=users,DC=fabrikam,DC=com","fabriak\username","password");

    B) Associar uma conta de usuário administrador do AD no ApplicationPool

    1. Selecione o ApplicationPool da sua aplicação (recomendável utilizar um exclusivo para aplicação);
    2. em Actions, clique em Advanced Settings;
    3. Clique no campo Identity e depois no botão "...";
    4. Selecione Custom account;
    5. Defina o usuário administrador do AD;



    Carlos Eduardo Ferreira

    • Marcado como Resposta Marcio Camargo quinta-feira, 26 de fevereiro de 2015 19:14
    quinta-feira, 26 de fevereiro de 2015 11:51
  • Boa tarde Carlos,

    Obrigado pela grande ajuda e desculpe a demora para responder!

    Testei as duas soluções, mas no primeiro momento estarei utilizando associar uma conta de usuário de serviço no ApplicationPool.

    É mas fácil para gerenciar nesse momento! 

    Muito obrigado

    quinta-feira, 26 de fevereiro de 2015 19:12