2009-03-17 6 views
2

사용자가 HTTPS를 통해 클라이언트 인증서를 사용하여 인증하는 ASP.NET 응용 프로그램에서 작업하고 있습니다. 우리 사용자는 IE7 만 사용하고 있습니다.사용자의 세션이 만료되면 브라우저에서 SSL 상태를 지우는 방법은 무엇입니까?

클라이언트 인증서가 성공적으로 인증 된 후에는 프로세스가 닫히거나 사용자가 SSL 캐시를 수동으로 지울 때까지 브라우저의 SSL 캐시에 남아 있습니다. 우리는 사용자가 로그 아웃하거나 세션이 만료 될 때마다 SSL 캐시를 지워서 시스템의 보안을 향상시킬 수 있기를 원합니다.

고객이 이미 스마트 카드를 사용하여 시스템에 액세스합니다.이 시스템은 카드를 클라이언트 컴퓨터에서 제거하면 자동으로 인증서를 언로드하지만 브라우저 캐시를 전혀 지우지는 않습니다. 따라서 다른 사용자가 정품 사용자와 동일한 컴퓨터에 액세스 할 수 있습니다.

나는 자바 스크립트에서 실제 캐시 청소하는 방법을 발견했습니다

document.execCommand ("ClearAuthenticationCache을");

사용자가 명시 적으로 로그 아웃 할 때 완벽하게 작동합니다. 사용자가 다시 로그인 할 수있게하기 전에 클라이언트에서 스크립트를 실행할 수 있기 때문입니다.

참고 : IE7에서는 웹 서버에서 HTTP 연결 유지를 사용하지 않도록 설정 한 경우에만 프로그래밍 방식으로 캐시를 지울 수 있습니다.

여기 까다로운 점이 있습니다. 클라이언트의 세션이 만료되면 사용자가 다시 로그인하기 전에 브라우저에서이를 처리 할 수있는 방법을 모르겠습니다. 페이지를 서버에서 실행하기 전에 상태를 지우고 새 인증서를 선택해야하기 때문에 로그인 페이지가 표시 될 때 상태를 지울 수 없습니다.

아이디어가 있으십니까? 문제의 길이에 대한 사과,하지만 배경이 중요합니다.

답변

2

내가 좋은 해결책을했다, 신경 쓰지 마 : 사용자가 성공적으로 로그인하면

  • , 우리는 브라우저가 종료 될 때까지 만료되지 않습니다 추가 세션 쿠키를 만들 수 있습니다.

  • 사용자가 나중에 로그인 페이지로 돌아가서 요청이 인증되지 않은 경우 세션 쿠키가 존재하는지 확인합니다. 세션 쿠키가있는 경우 이전에 세션이 있었기 때문에 사용자가 명시 적으로 기록합니다 사용자가 시작한 로그 아웃과 똑같은 작업을 수행합니다. 세션 쿠키가 존재하지 않으면 사용자가 인증서를 사용하여 자동으로 로그인하려고 시도합니다.

  • 사용자 지정 세션 쿠키는 명시 적 로그 아웃마다 삭제되고 로그인에 성공할 때마다 다시 채워집니다.

이렇게하면 사용자에게 최상의 환경을 제공하고 세션이 유효 (15 분, 슬라이딩)되는 동안에 만 인증서가 캐시됩니다. 또한 세션 쿠키는 사용자가 제거 할 수 없으므로이 동작을 무시할 방법이 없습니다. 그들은 세션 쿠키를 수락하지 않고 사이트를 사용할 수 없습니다.

+0

명시 적으로 "로그 아웃"하는 방법은 무엇입니까? 이것이 클라이언트 측의 "ClearAuthenticationCache"에 대한 JS 호출 인 경우 PowerUser는 해당 호출을 우회하여 클라이언트 측 코드를 해킹 할 수 있습니다. –

+0

Laurent의 질문에 –

+0

우리는 서버에 로그 아웃합니다. 보통의 FormsAuthentication.SignOut() 메소드는 클라이언트 상호 작용이 없습니다. – Sam