asp.net - personalizar - seguridad asp net
El estado de inicio de sesión de Identidad principal de ASP.Net se perdió después de la implementación (2)
(solución dividida en una respuesta separada después del comentario de Chris)
Encontré una solución para mantener el estado de inicio de sesión, sobrevive al inicio / detención del sitio web y una actualización de la carpeta de origen del sitio web:
public void ConfigureServices(IServiceCollection services)
{
services.AddDataProtection()
// This helps surviving a restart: a same app will find back its keys. Just ensure to create the folder.
.PersistKeysToFileSystem(new DirectoryInfo("//MyFolder//keys//"))
// This helps surviving a site update: each app has its own store, building the site creates a new app
.SetApplicationName("MyWebsite")
.SetDefaultKeyLifetime(TimeSpan.FromDays(90));
}
Con estas líneas adicionales y el conjunto de claves de la máquina, los datos de inicio de sesión permanecen después de que se detenga / inicie el sitio y se reinicie el servidor IIS, y si el sitio se reconstruye.
Más información allí: https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/configuration/overview
Más propuesto por justserega: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?tabs=aspnetcore2x#data-protection
Estoy usando ASP.Net Core y MS Identity, trato de entender por qué, después de cada implementación, los usuarios que inician sesión se desconectan. Me estoy ejecutando en un IIS 8.5
He estado probando el método en este hilo (configurando la clave de máquina estática) el inicio de sesión de Identidad 2 de ASP.NET después de la implementación generando claves estáticas a nivel de servidor en la IU de IIS y agregando lo siguiente a web.config del sitio web:
<system.web>
<machineKey validationKey="XXX"
decryptionKey="XXX"
validation="SHA1" decryption="AES"/>
</system.web>
Sin embargo, el problema sigue siendo:
- El usuario inicia sesión
- Detener el sitio
- Sitio de inicio
- El usuario debe iniciar sesión de nuevo
Pero también voy a esto:
- El usuario inicia sesión
- Sitio de reinicio
- El usuario todavía está conectado
¿Qué puede hacer que el usuario se desconecte? ¿Alguna idea de cómo evitar eso?
Autenticación utiliza la pila de protección de datos. Si la protección de datos no está configurada, las claves se guardan en la memoria y se descartan cuando la aplicación se reinicia.
Si el llavero se almacena en la memoria cuando la aplicación se reinicia:
- Todos los tokens de autenticación basados en cookies se invalidan.
- Los usuarios deben iniciar sesión nuevamente en su próxima solicitud.
- Cualquier dato protegido con el conjunto de claves ya no puede ser descifrado. Esto puede incluir tokens CSRF y ASP.NET Core MVC tempdata cookies.
Debe configurar la protección de datos, más información aquí https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?tabs=aspnetcore2x#data-protection