사용자를 인증하기 위해 로그인 양식을 사용하고 있습니다.FormsAuthentication과 동일한 세션 인증이 필요합니까?
FormsAuthentication
은 클라이언트 쪽 쿠키 또는 URL의 중요한 사용자/역할 멤버쉽을 저장하기 때문에 문제가 없습니다. URL 내에는 거대한 보안 위험이 있으므로 그 부분에 대해서도 알지 않습니다. FormsAuthentication
쿠키를 사용하면 다음과 같은 문제가 발생합니다. a) 클라이언트가 자신의 역할을 지정하는 위치에있는 보안. b) 쿠키에 저장된 데이터의 양이 너무 많습니다. 보안을 통해 아무 것도 얻지 못하고 사용자 데이터 저장소의 크기에 많은 시간을 할애하지 않기 때문에 세션으로 작업하고 싶습니다.
모든 기본 로그인 양식 처리 기능에 대해 FormsAuthentication
과 같은 것을 재사용하고 싶습니다. 하지만 오히려 클라이언트 데이터를 저장하는 대신 클라이언트 쪽보다는 세션에 사용자 데이터를 저장하는 것이 좋습니다. 모든 쿠키는 단일 쿠키에 저장됩니다. 차라리 일종의 세션 토큰에 대해 인증하는 것이 좋습니다.
나는 을 가지고 있지 않다. 사용자 데이터의 데이터베이스와 로컬 디스크 저장소는 금지되어있다. 제 3 자 인증 서비스 제공 업체에 의존하고 있습니다. 요구 사항은 이어야합니다.이 서비스로 인한 대화를 줄여야합니다. 따라서 사용자 정보의 임시 저장을위한 세션. 그게 내가 묻는 문제는 아니지. 또한, 요구 사항은 I 등, /이 HttpContext.user 나중에 뷰에서 사용자 정보를 표시하는 AuthorizeAttribute과 같은 것들에 사용 가능성 Thread.CurrentPrincipal을 사용하여 설정해야한다는 것입니다
그래서 FormsAuthentication
저장 모든 사용자 데이터 쿠키에서 클라이언트 측. 반면 세션은 모든 데이터를 서버 측에 저장하고 간단한 클라이언트 측 토큰 쿠키 만 사용합니다. 그러나 Session은 asp.net 시작 및 인증 단계에서 사용할 수 없습니다. 클라이언트 측 대신 세션 서버 측에 모든 데이터를 저장하는 동등한 형식의 "멤버십"공급자가 있습니까?
에는 세션에 해당이없는 경우 ... 내가 설정하는
- HttpContext.user 및 Thread.CurrentPrincipal는 방해 또는 기타를 엉망으로하지 않고 모두 MVC 애플리케이션의 나머지 부분에 걸쳐 사용할 수 두 값을 만들려면 MVC 구성 요소?
- # 1의 힌팅은 해당 진입 점에서 세션을 사용할 수 있습니까? 그렇지 않다면 Session에 저장된 데이터를 사용하여 Principle/Identity 객체를 만들 수 있도록 어떻게 사용할 수 있습니까?
- 이것은 고유 한 요구 사항 일 수 없습니다. 이것을 처리 할 라이브러리가 이미 있습니까?
그래서 AES에 금이 갔습니까? DES조차도 특수 하드웨어를 필요로합니다. 세션에 자격 증명을 저장하면 강력하게 암호화 된 인증 쿠키를 위조하거나 조작하는 어려운 작업에서 세션 쿠키를 위조하거나 하이재킹하는 쉬운 작업으로 ID를 가로 챌 수있는 문제가 줄어 듭니다. 이전 버전의 .NET에서는 int를 추측하여 세션을 가로 챌 수 있었기 때문에 10 억 개 정도의 요청이나 세션 고정을 통해 쉽게 세션 쿠키를 추출하여 제공 할 수있었습니다. int는 int보다 우수합니다.그러나 FormsAuth 티켓을 위조하려면 AES를 작성해야합니다. – MatthewMartin
@MatthewMartin :이 암호화 된 값을 크래킹하는 것이 어려울 지 모르겠지만, 어떤 상황에서도 클라이언트 측의 사용자 이름/역할 아무것도 얻을 수 없으므로 세션에도 참석할 수 있습니다. 또한 쿠키에 대한 스토리지 제한 및 너무 많은 데이터가 전송됩니다. 다시 한번 양식 티켓이 곧 나옵니다. –
그러면 각 요청에 대해 다시 인증을 받아야합니다. – MatthewMartin