Híbrido de Autenticação do Windows e Autenticação de Formulários no ASP.NET MVC 4
Nós temos um aplicativo de intranet ASP.NET MVC 4. Estamos usando a Autenticação do Windows e esse aspecto funciona bem. As credenciais do usuário são usadas e podemos acessar essas credenciais do aplicativo da web.
O que realmente queremos é algum tipo de modo híbrido, no entanto. Queremos obter as credenciais do usuário no navegador, mas também queremos verificar se o usuário está no banco de dados do nosso aplicativo. Se o usuário estiver no banco de dados, ele poderá continuar. Se não estiverem, queremos redirecioná-los para uma página pedindo credenciais alternativas. O que estou fazendo agora é, emGlobal.asax.cs
Eu tenho umApplication_AuthenticateRequest
método e estou verificando se o usuário está autenticado. Se eles estiverem e suas informações de cookie não refletirem o fato de que eles estão conectados ao sistema, eu os conecto e configuro alguns cookies com informações sobre o usuário. Se eles não estiverem autenticados, eu os redireciono para uma página de login. Não podemos usar as funções do AD por motivos envolvidos com a política da empresa, por isso precisamos usar o banco de dados para autenticação adicional.
Estou supondoApplication_AuthenticateRequest
não é o lugar para fazer isso, mas talvez seja. Mas basicamente precisamos de um local para filtrar as solicitações de autenticação. Mas, além disso, essa implementação me leva a outro problema:
Temos determinados URLs em nosso aplicativo que permitem acesso anônimo. Eu já adicionei<location>
tags para o web.config para estes. O problema é que, quando chamadas anônimas são feitas para eles,Application_AuthenticateRequest
e tenta registrar o usuário no banco de dados. Agora, posso adicionar códigoApplication_AuthenticateRequest
para lidar com esses URLs e esse é atualmente o meu plano, mas se eu escrever eApplication_AuthenticateRequest
não é o lugar para fazer isso, então eu prefiro descobrir isso agora do que mais tarde.