IT박스

양식 인증 시간 초과와 세션 시간 초과

itboxs 2020. 12. 9. 07:57
반응형

양식 인증 시간 초과와 세션 시간 초과


내 asp.net 웹 사이트에서 다음 구성으로 asp.net 양식 인증을 사용하고 있습니다.

<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>

다음과 같은 질문이 있습니다

  1. 폼 인증 전에 만료되는 세션으로 인해 폼 인증 내에서 슬라이딩 만료를 사용하고 있기 때문에 세션의 시간 초과 값은 무엇입니까? 어떻게 보호 할 수 있습니까?

  2. formauthentication 로그 아웃 후 logout.aspx에서 페이지를 리디렉션하고 싶지만 loginpage.aspx에서 자동으로 리디렉션됩니다. 그게 어떻게 가능해?


  1. 안전을 위해 : TimeOut (Session) <= TimeOut (FormsAuthentication) * 2
  2. 인증 시간 초과 후 loginUrl 특성에 지정된 것 이외의 페이지를 표시하려면 ASP.NET에서이를 수행하는 방법을 제공하지 않으므로이를 수동으로 처리해야합니다.

# 2를 달성하려면 쿠키와 해당 AuthenticationTicket이 만료되었는지 수동으로 확인하고 만료 된 경우 사용자 지정 페이지로 리디렉션 할 수 있습니다. AcquireRequestState , AuthenticateRequest
이벤트 중 하나에서 수행 할 수 있습니다 .

이벤트의 샘플 코드는 다음과 같습니다.

// 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
}

세션 종속성이있는 사이트의 경우 global.asax의 세션 시작 이벤트를 사용하여 부실 인증에서 로그 아웃 할 수 있습니다.

void Session_Start(object sender, EventArgs e)
{
  if (HttpContext.Current.Request.IsAuthenticated)
  {

    //old authentication, kill it
    FormsAuthentication.SignOut();
    //or use Response.Redirect to go to a different page
    FormsAuthentication.RedirectToLoginPage("Session=Expired");
    HttpContext.Current.Response.End();
  }

}

이것은 새로운 세션 = 새로운 인증, 기간이되도록합니다.

참고 URL : https://stackoverflow.com/questions/1470777/forms-authentication-timeout-vs-session-timeout

반응형