Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Forms Authentication Timeout vs Session Timeout

In my asp.net website i am using asp.net form authentication with following configuration

<authentication mode="Forms">     <forms loginUrl="~/Pages/Common/Login.aspx"            defaultUrl="~/Pages/index.aspx"            protection="All"            timeout="30"            name="MyAuthCookie"            path="/"            requireSSL="false"            cookieless="UseDeviceProfile"            enableCrossAppRedirects="false" >     </forms> </authentication> 

I have following questions

  1. What should be timeout value for session because i am using sliding expiration inside form authention due to which session will expire before form authentication. How can i protect it?

  2. After formauthentication log out i would like to redirect page at logout.aspx but it is automatically redirect me at loginpage.aspx. How is it possible?

like image 913
Hemant Kothiyal Avatar asked Sep 24 '09 10:09

Hemant Kothiyal


People also ask

What is form authentication timeout?

The Forms Authentication Timeout value sets the amount of time in minutes that the authentication cookie is set to be valid, meaning, that after value number of minutes, the cookie will expire and the user will no longer be authenticated—they will be redirected to the login page automatically.

Why do forms time out?

Now, why is this necessary.. Forms authentication timeout indicates, how long a user is recognised and stay authenticated in case of any lack of inactivity and similarly session timeout indicates how long to preseve users session in case of any inactivity.

What is session timeout?

Session timeout represents the event occuring when a user does not perform any action on a web site during an interval (defined by a web server). The event, on the server side, changes the status of the user session to 'invalid' (ie.

What is authentication mode forms?

Forms authentication enables user and password validation for Web applications that do not require Windows authentication. With forms authentication, user information is stored in an external data source, such as a Membership database, or in the configuration file for an application.


1 Answers

  1. To be on the safe side: TimeOut(Session) <= TimeOut(FormsAuthentication) * 2
  2. If you want to show page other than specified in loginUrl attribute after authentication timeout you need to handle this manually as ASP.NET does not provide a way of doing it.

To achieve #2 you can manually check the cookie and its AuthenticationTicket for expiration and redirect to your custom page if they have expired.
You can do in it in one of the events: AcquireRequestState, AuthenticateRequest.

Sample code in the event can look like:

// Retrieve AuthenticationCookie var cookie = Request.Cookies[FormsAuthentication.FormsCookieName]; if (cookie == null) return; FormsAuthenticationTicket ticket = null; try {     ticket = FormsAuthentication.Decrypt(cookie.Value); } catch (Exception decryptError) {     // Handle properly } if (ticket == null) return; // Not authorised if (ticket.Expiration > DateTime.Now) {     Response.Redirect("SessionExpiredPage.aspx"); // Or do other stuff here } 
like image 139
Dmytrii Nagirniak Avatar answered Oct 12 '22 19:10

Dmytrii Nagirniak