Página de login lança 401 com autenticação de formulários

1

Eu já vi essa pergunta algumas vezes na internet, mas nenhuma resposta que já vi resolveu meu problema.

Eu tenho a autenticação de formulários ativada em meu aplicativo e o acesso anônimo foi negado:

<configuration>
...
<system.web>      
...  
    <authentication mode="Forms">
        <forms name=".ASPXFORMSAUTH" loginUrl="Account/Authenticate.aspx"></forms>
    </authentication>
    <authorization>
        <deny users="?"/>
    </authorization>

O acesso à página de login foi ativado:

</system.web>

<location path="Account/Authenticate.aspx">
    <system.web>
        <authorization>
            <allow users="?"/>
        </authorization>
    </system.web>
</location>

A autenticação anônima está habilitada na caixa de diálogo de propriedades do projeto e a autenticação do Windows está desabilitada. Eu também verifiquei o arquivo applicationhost.config para o IIS Express em meus documentos. Possui todos os modos de autenticação, exceto anônimo desabilitado. Estou usando o IIS express como o servidor de depuração.

Até onde eu sei, isso é tudo o que você deve fazer para resolver o erro de acesso negado, mas ainda recebo a seguinte mensagem de erro no meu navegador:

Mensagem de erro 401.2 .: Não autorizado: o logon falhou devido à configuração do servidor. Verifique se você tem permissão para exibir esse diretório ou página com base nas credenciais fornecidas e nos métodos de autenticação habilitados no servidor Web.

Como uma observação interessante, se eu habilitar a autenticação do Windows, a página de login aparecerá corretamente. No entanto, isso não funciona quando o site é implantado. Se implantado, a ativação da autenticação do Windows apenas fará com que uma janela JavaScript apareça em pop-ups pedindo credenciais (não a forma que eu criei).

Alguém sabe como consertar isso? Meu único recurso neste momento é restringir manualmente o acesso ao código e fazer com que o IIS deixe todo o tráfego passar.

Editar

Como solução final, apenas autentiquei manualmente os usuários. Tanto quanto o IIS sabe que o acesso anônimo é irrestrito, mas a sessão é verificada em cada solicitação para verificar se o usuário efetuou login (a sessão é onde eu armazeno meu objeto de conexão de banco de dados por usuário). Para conteúdo estático, apenas uso manipuladores HTTP que usam um estado de sessão somente leitura para verificar o acesso antes de exibir arquivos.

    
por Ian 24.07.2015 / 00:52

0 respostas