2011-01-24 3 views
4

많은 사용자를 위해 무언가를 개발하고 있으며, 테스트를 진행할 때 NAT 사용자는 단 하나의 세션이므로 정보를 병합하고있었습니다. 올바른 사용자에게 올바른 정보를 표시하려면 어떻게해야합니까?NAT 네트워크가 세션을 병합 중입니다.

Java, JSF 1.2 및 SpringSecurity를 ​​사용하고 있습니다.

업데이트 :

또는 적어도, 어떻게 내가 뭔가를 개발하고이를 분할 할 것 있는지 확인하고 한 사용자는 자신의 정보에 액세스 할 수 있을까?

+0

사용자 데이터를 병합하는 NAT라고 생각하는 이유는 무엇입니까? 대부분의 경우 NAT는 훨씬 낮은 네트워크 수준에서 작동합니다. – Osw

+0

그것은 NAT 사용자 만이 일어나고 있습니다. 그게 내 생각을하게 만듭니다. 네트워크 서버의 캐시가 될 수 있는지 궁금합니다. – pringlesinn

+0

먼저 NAT 테스트를 시작합니다. 가능한 아웃 바운드 연결을 사용하는 경우 세션 데이터를 병합하지 않고도 사서함, google, twitter, facebook에 독립적으로 액세스 할 수 있는지 확인하십시오. 테스트가 통과되고 편집적인 네트워크 보안 설정이 감지되지 않으면 더 많은 응용 프로그램 정보가 필요합니다. 'user1'과 같은 단순한 좁은 테스트 케이스가 간단한 양식을 채우고 제출하고, 뒷주인은 요청을 처리하고 user2는 똑같은 작업을 수행합니다. (web.xml), 세션 및 스프링 설정, 서버 플랫폼 등 – Osw

답변

6

IP로 세션을 일치시키는 어리석은 (미안) 세션 처리 일 수 있습니다. 모든 NAT 사용자는 동일한 외부 IP를 가지므로 병합됩니다. 세션을 처리하기 위해 쿠키를 사용하는 것이 좋습니다.

beliarius가 말했듯이, 이미 쿠키를 사용하고 있지만 쿠키가 IP에서 생성 된 경우에는 매우 쓸모가 없습니다.

당신이 말하는 앱이 브라우저 기반이 아닌 경우 클라이언트에게 쿠키를 보내고 쿠키 처리를 직접 구현해야합니다. 또는 클라이언트 당 하나의 TCP 연결을 사용하고 다시 연결하면됩니다.

+2

이 이론을 테스트하는 것은 동일한 컴퓨터에서 실행되는 두 개의 서로 다른 로그인으로 두 개의 브라우저를 사용하는 것입니다. 세션이 병합됩니까? – davidg

0

@Daniel의 답을 덧붙이면, 서브넷 마스킹의 잘못된 값으로 구성된 IP 주소 기반 어피 니티가 있다고 생각합니다. IP 주소 기반 선호도가 구성된 경우 마스크는 255.255.255.255 여야 IP에 기반한 연결을 고유하게 식별 할 수 있습니다. 이것은 IP 가상 서버에서도 확인되어야합니다.

0

때때로 세션이 시작될 때마다 제대로 재생성되지 않는 세션 쿠키가있을 때 이런 현상이 발생합니다. 이 가설을 테스트하려면 다른 클라이언트에서 session_id를 확인하십시오.