2012-03-28 2 views
0

많은 asp.net 응용 프로그램을 호스팅하는 웹 사이트가 있습니다. 일부는 MVC2로 작성되었으며 일부는 MVC3로 작성되었고 일부는 집안에 작성되지 않았으며 이진 배포 (소스 코드를 찾을 수 있음)되어 ASP.Net 2.0 웹폼으로 작성된 프로그램도 많이 있습니다. 이 모든 사이트에서 우리는 로그인 응용 프로그램의 단일 로그인 페이지를 사용합니다. 우리는이 때문에 모든 응용 프로그램을 공유 할 수 있습니다 :사용자 지정 양식 인증 티켓 확인

  1. 같은 응용 프로그램 풀
  2. 키 같은 기계
  3. 같은 로그인 쿠키 이름

그들은 또한 보안 문제를 공유되어 내 문제, 쿠키 스푸핑 방지. 로그인 쿠키 (아마도 useradata 필드)에 몇 가지 추가 정보 (ip, user agent의 처음 2 바이트)를 추가 한 다음 쿠키를 수락하기 전에 모든 요청에 ​​대해이를 확인하는 것이 좋습니다.

내 질문은 어디 양식 인증 티켓을 확인하고 사용자를로드하고 로그인을 사용하기 전에 몇 가지 추가 사항을 확인하려면이 무시할 수 있습니다.

이 코드를 모든 global.cs에 추가 할 필요가 없으면 일부 플러스 (dll)에 넣고 config 파일의 dll을 참조 할 수 있습니다.

+0

서브 노트에 내가 그 만 내 sessionID와 나의 로그인 쿠키 도움이되었다고 도움이 될 경우 사용자 정의 SessionIDManager보고 추가 :

HttpCookie authCookie = Context.Request.Cookies["YourFormsCookieName"]; if (IsValidAuthCookie(authCookie)) { // do some stuff } else { // expire cookie using FormsAuthentication.Signout() // do some stuff } 

이 유용한 링크입니다. – Jeff

+0

Global.asax에서 Application_AuthenticateRequest 이벤트를 사용할 수 있습니까? 관련 설명이 여기에 있습니다. http://stackoverflow.com/questions/875472/authenticaterequest-event – SilverlightFox

+1

asp.net이 쿠키에 대한 IP 검사를 수행하지 않는 이유는 그것이 매우 어리석은 생각. 모바일 장치를 사용할 때 (분 단위로 변경 될 수 있음) 또는 사용자 동적 IP가 변경되거나 공유 프록시가 풀링되는 경우와 같이 사용자 IP 주소가 변경되는 조건이 너무 많습니다. 또한 누군가가 방화벽 뒤의 한 컴퓨터에서 같은 방화벽 뒤의 다른 컴퓨터로 쿠키를 복사하지 못하게합니다. 사용자가 사이트를 사용하지 못하게하여 예상치 못한 취약점을 해결하려고하고 있으며 제대로 작동하지 않습니다. –

답변

0

FormsAuthenticationModule을 새로 작성하는 것 외에는 인증을 무시할 수는 없지만 더 간단한 방법이 있습니다. ASP.NET 파이프 라인 처리 요청이 처리되는 동안 각 단계마다 이벤트가 발생합니다. 여기에서 ASP.NET 파이프 라인을 탭하여 작업을 수행 할 수 있습니다. 귀하의 경우에는

ASP.NET pipeline Authentication & Authorization steps

, 당신은 PostAuthenticateRequestHandler 이벤트 처리기에서 쿠키의 유효성을 검사 할 수 있습니다. Forms Authentication