Event code: 4005 Forms authentication failed for the request. Reason: The ticket supplied has expired

Son varias las razones por las que este mensaje suele aparecer en el visor de eventos de un servidor sirviendo aplicaciones de .NET, en esta entrada voy a aboradr la más común y la menos grave. Algunas razones por las que pasa esto son:

  • Un dispositivo de red (un firewall, un proxy, etc.) está removiendo la cookie de autenticación en el paso de datos entre el cliente y el servidor.
  • Si el ticket de autenticación se genera manualmente en nuestra app, es posible que la propiedad time-out la estemos estableciendo con un valor menor al valor Expiration del web.config.
  • El pool donde está correindo la app se recicló.

En el caso de apps sobre Framework 4, el mensaje cambia ligeramente a:

Event code: 4005
Event message: Forms authentication failed for the request. Reason: The ticket supplied was invalid.

Microsoft aborda con más a detalle estos y otros casos: Troubleshooting Forms Authentication

REMOVER LAS ADVERTENCIAS

Lo primero que hay que detectar, es cuál es la causa de las pérdidas de la cookie de autenticación. Si es un mensaje que aparece constantemente y varias veces al día, entonces posiblemente sea un problema grave con nuestra red, con nuestro código, con el cifrado en el web.config o machine.config, entre otras causas. Este documento nos puede apoyar a encontrar el problema, además que ofrece alernativas para solucionarlo: Troubleshooting Forms Authentication

Si estos mensajes aparecen poco, uno o dos por día o semana, entonces es algo relativamente normal. Quizá el usuario dejó abierta su sesión mucho tiempo, una pérdida en el transporte de los paquetes en la red, se recicló nuestro pool de aplicación, en fin, cosas normales. Generalmente el usuario no se da cuenta de la expiración del ticket pues a lo mucho (no en todos los casos) le pedirá nuevamente autenticarse para continuar trabajando normalmente. Si este es nuestro caso, podemos remover las advertencias en nuestro visor de eventos agregando lo siguiente en el archivo web.config de la aplicación:

[xml]
<configuration>
<system.web>
<healthMonitoring>
<rules>
<remove name="Failure Audits Default" />
</rules>
</healthMonitoring>
</system.web>
</configuration>
[/xml]

Con esto dejan de aparecer todos los eventos System.Web.Management.WebFailureAuditEvent, que tienen que ver con fallas en la autorización/autenticación y están dentro del rango de 4005-4011. De nuevo, para los casos donde sabemos lo que está pasando y hay seguridad de que no es una falla de la aplicación, no es mala idea removerlos de nuestro visor de eventos.

Comentarios