ASP.Net 5 Autenticação Persistente de Identidade Não Funcionando IIS 7.5 Temporizador Ocioso

8

Estou tendo um problema com uma caixa de seleção de estilo "lembrar-me" em um projeto do MVC6. Eu tive uma pergunta relacionada aqui que resolveu o problema de depuração no meu localhost, no entanto, depois de implantar o projeto em nosso ambiente de desenvolvimento, ele ainda me força a fazer o login novamente após 20 minutos.

O intervalo de tempo de 20 minutos me fez pensar que algo estava mal configurado com o IIS. Configurei o temporizador inativo do meu pool de aplicativos (configurado como "nenhum código gerenciado") para ficar ocioso após 1 minuto. Com certeza, depois de 1 minuto, eu tenho que fazer o login novamente.

Isso me leva a acreditar que meu cookie de autenticação persistente não está mais sendo aceito como válido após uma reciclagem do pool de aplicativos (embora meu cookie esteja configurado para não expirar até 10 dias e o SecurityStampValidationInterval esteja definido para 10 dias e 1 minuto.

Eu vi algo semelhante em versões anteriores do .NET relacionadas à chave de máquina de um web.config, mas o MVC6 não tem uma seção system.web no web.config para eu colocar uma chave de máquina.

Meu projeto DNX do .NET5 está voltado para o framework .NET completo e não para o .NET Core.

    
por mituw16 12.02.2016 в 21:01
fonte

2 respostas

6

Como você configurou a proteção de dados? Com o IIS e o DNX, não sabemos onde armazenar as chaves de maneira persistente, a menos que você carregue um perfil, que não é o padrão. Então, quando o seu aplicativo terminar, todas as chaves usadas para assinar os cookies de autenticação serão descartadas. Isso não acontece no IIS Express, porque o IIS Express carrega perfis.

Você tem algumas opções aqui. Você pode executar um script de provisionamento no servidor IIS para criar algumas entradas de registro ASP. NET pode usar, ou você pode configurar a proteção de dados para usar o sistema de arquivos que é o que você faria se estivesse querendo executar vários hosts.

    
por blowdart 19.02.2016 / 21:03
fonte
1

EDITAR

Veja a resposta do @ blowdart para uma solução melhor.

Para qualquer um que esteja encontrando o mesmo problema que eu tive, a "correção" que eu implementei para isso é definir o Timer Inativo no IIS como 0, o que significa nunca tempo limite.

Ainda estou tentando encontrar uma solução real, pois alguns ambientes de hospedagem podem não permitir que o timer inativo seja definido como 0 (geralmente, hospedagem compartilhada, etc.).

    
por mituw16 16.02.2016 / 13:16
fonte