O IIS suporta autenticação básica HTTP e autenticação de formulário ao mesmo tempo?

2

prefácio: Eu sou um desenvolvedor web que conhece muito bem os servidores apache, mas tenho pouco ou nenhum conhecimento de IIS ou .NET

Eu trabalho com um desenvolvedor que tem evitado uma solicitação para adicionar uma autenticação básica a um servidor de armazenamento temporário que está executando o IIS por um tempo agora. Hoje ele finalmente adicionou, mas adicionou a mensagem

IIS does not allow you to use basic auth and forms auth at the same time.

I got around this by installing a 3rd party process that lets you use .htaccess / apache modules in front of the iis modules.

It's a little more resource intensive on request but for staging it's not really critical.

A minha pergunta é (desde que essa explicação atinja tudo o que sei sobre aplicativos da Web e separação de responsabilidades) como é possível que o IIS impeça o uso de Basic Auth em um site que use uma autenticação de formulário personalizada para seus usuários?

    
por user128996 19.07.2012 / 23:53

1 resposta

3

Autenticação básica é um termo que geralmente se refere à autenticação dentro do protocolo HTTP.

A autenticação baseada em formulários é tratada no contexto de um aplicativo baseado na web. Isso geralmente envolve um formulário que define algum tipo de identificador de sessão com um cookie e, quando o formulário é processado, as informações são associadas a essa sessão no lado do servidor sobre o estado dos usuários.

Realmente não existe qualquer relação direta entre a autenticação baseada em formulário, que é basicamente rastreada através do cookie de sessão, e a autenticação baseada em HTTP, que é, na verdade, diretamente dentro dos cabeçalhos HTTP.

how can it be possible that IIS would prevent the use of Basic Auth on a site that uses a custom form auth for its users?

Não tem nada a ver com o IIS impedindo autenticação básica, tem a ver com os dois não sendo compatíveis. Se você fizer sua autenticação inicial com um formulário, o estado de login associado será armazenado em uma sessão. Mas o software que lida com autenticação básica normalmente não sabe nada sobre cookies ou sessões, tudo o que ele sabe é sobre autenticação HTTP. Quando você permite que o IIS execute a autenticação, a autenticação acontece antes que o aplicativo seja tocado.

Se você usar os recursos integrados do IIS para autenticação básica, basicamente terá que usar apenas isso.

Mas, deve ser possível implementar a autenticação HTTP em seu aplicativo fazendo com que seu aplicativo envie e analise os cabeçalhos HTTP corretos. Para isso, você deixaria o IIS configurado para autenticação baseada em formulários e, em seguida, faria tudo em seu aplicativo. Dessa forma, deve ser possível que seu aplicativo envie os cabeçalhos adequados, dependendo do estado da sessão.

    
por 20.07.2012 / 00:17