none
Login Asp.Net em 2 Servidores AD RRS feed

  • Pergunta

  • Bom dia

    Estamos desenvolvendo um sistema em Asp.Net, e essa aplicação realizará autenticação via Forms.

    Encontrei um código que realiza a autenticação no AD, porém, aqui na empresa temos 2 servidores de AD com nomes diferentes.

    E eu criei um drop down list, e gostaria que de acordo com o dominio que o usuário selecionar, ele se autenticar nele.

    O problema é que a aplicação só consegue se autenticar no dominio em que o servidor de iis está. no outro ele retorna a mensagem que o servidor não está operacional.

    Alguem tem idéia de como faço isso?

    segunda-feira, 20 de maio de 2013 12:00

Respostas

  • Felipe,

    Então problema é de configuração de domínio, provavelmente você só consegue autenticar no AD do mesmo domínio que o servidor do IIS está configurado.

    Este problema pode ser de configuração de rede ou do servidor IIS que você está usando.

    Mas tente verificar isso primeiro:

    1º Configuração do Web.config

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>    
      <system.web>
        <authentication mode="Forms">
          <forms loginUrl="logon.aspx" name="adAuthCookie" timeout="10" path="/" >
          </forms>
        </authentication>	
        <authorization>	
          <deny users="?" />
          <allow users="*" />
        </authorization>	
        <identity impersonate="true" />
      </system.web>
    </configuration>

    Observe a tag <identity impersonate="true" />;

    Configurar o IIS para a autenticação anônima

    Para configurar o IIS para a autenticação anônima, execute estas etapas:
    1.No IIS, expanda o nó do computador para o seu servidor, expanda Sites, expanda Default Web Site, mouse FormsAuthAde, em seguida, clique em Propriedades.
    2.Clique na Guia segurança de diretórioe, em seguida, clique em Editar em Anonymous Access and Authentication Control.
    3.Verifique a conta anônima para o aplicativo com uma conta que tenha permissão para o Active Directory.
    4.Clique para desmarcar a caixa de seleção Permitir para controle senha do IIS.
    5.Na seção "Acesso autenticado", desmarque a caixa de seleção "Autenticação integrada do Windows".
    6.Clique em OK.
    7.Clique em Aplicar

    3º Na implementação

    Na instância da classe DirectoryEntry tente usar DirectoryEntry(path, domainAndUsername, password), onde domainAndUsername fica assim "Domain\Username".

    E na propriedade Filter da classe DirectorySearcher deixe como está só Username, "(SAMAccountName=" + username + ")".

    Espero que te ajude.


    Fábio Alencar

    quinta-feira, 23 de maio de 2013 14:33

Todas as Respostas

  • Felipe,

    No seu local eu usaria o recurso de Membership, criava uma classe customizada hedando de MembershipProvider, no método ValidateUser, verificaria no primeiro AD, se não fosse valido, verificaria do segundo AD.

    Com isso você deixaria sua aplicação mais simples, pois ficaria transparente para o usuário qual o AD que ele tem que usar, sua aplicação iria cuidar dessa tarefa.


    Fábio Alencar

    terça-feira, 21 de maio de 2013 17:30
  • Fabio, o problema é que pelo o que parece a aplicação não está enchergando o segundo dominio... o código que estou utilizando é o seguinte:

        Private Sub AutenticaActiveDirectory()
            Dim _ADEntry As New DirectoryEntry("LDAP://" & Dominio & "", Login, Senha)
    
            Dim _ADSearch As DirectorySearcher = New System.DirectoryServices.DirectorySearcher(_ADEntry)
    
            _ADSearch.Filter = ("(samAccountName=" & Login & ")")
    
            _ADSearch.SearchScope = SearchScope.Subtree
    
            Try
                Dim UserFound As SearchResult = _ADSearch.FindOne()
            Catch ex As Exception
                Throw New Exception(ex.Message)
            End Try
        End Sub

    terça-feira, 21 de maio de 2013 17:51
  • Felipe,

    Então problema é de configuração de domínio, provavelmente você só consegue autenticar no AD do mesmo domínio que o servidor do IIS está configurado.

    Este problema pode ser de configuração de rede ou do servidor IIS que você está usando.

    Mas tente verificar isso primeiro:

    1º Configuração do Web.config

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>    
      <system.web>
        <authentication mode="Forms">
          <forms loginUrl="logon.aspx" name="adAuthCookie" timeout="10" path="/" >
          </forms>
        </authentication>	
        <authorization>	
          <deny users="?" />
          <allow users="*" />
        </authorization>	
        <identity impersonate="true" />
      </system.web>
    </configuration>

    Observe a tag <identity impersonate="true" />;

    Configurar o IIS para a autenticação anônima

    Para configurar o IIS para a autenticação anônima, execute estas etapas:
    1.No IIS, expanda o nó do computador para o seu servidor, expanda Sites, expanda Default Web Site, mouse FormsAuthAde, em seguida, clique em Propriedades.
    2.Clique na Guia segurança de diretórioe, em seguida, clique em Editar em Anonymous Access and Authentication Control.
    3.Verifique a conta anônima para o aplicativo com uma conta que tenha permissão para o Active Directory.
    4.Clique para desmarcar a caixa de seleção Permitir para controle senha do IIS.
    5.Na seção "Acesso autenticado", desmarque a caixa de seleção "Autenticação integrada do Windows".
    6.Clique em OK.
    7.Clique em Aplicar

    3º Na implementação

    Na instância da classe DirectoryEntry tente usar DirectoryEntry(path, domainAndUsername, password), onde domainAndUsername fica assim "Domain\Username".

    E na propriedade Filter da classe DirectorySearcher deixe como está só Username, "(SAMAccountName=" + username + ")".

    Espero que te ajude.


    Fábio Alencar

    quinta-feira, 23 de maio de 2013 14:33
  • Fabio, obrigado pela resposta.

    Na verdade era problema na relação de confiança.

    quarta-feira, 5 de junho de 2013 20:32