2012-11-21 3 views
0

Jetty 8을 사용하고 있으며 두 개의 인스턴스가 라운드 로빈로드 밸런서 뒤에 설정되어 실행 중입니다. MongoDB를 통해 세션 복제를 사용하도록 구성했습니다. 내 응용 프로그램은 봄 보안을 사용합니다. 두 가지 예외를 제외하고는 잘 작동합니다. 여기에 하나를 포함시키고 또 다른 질문에 다른 하나를 포함시킬 것입니다.Spring "Remember Me"가 부두 및 세션 복제와 함께 작동하지 않음

  1. 스프링 보안의 "Remember Me"가 올바르게 작동하지 않습니다. 사용자가 로그인하여 "Remember me"를 요청하면, 사용자가 미래의 인증 요청이 원래 로그인 중에 적중 된 특정 노드에 도달했다고 가정하면 정상적으로 작동합니다. 그러나 이후의 인증 요청이 다른 노드에 도달하면 해당 노드는 "내 정보 저장"요청을 알지 못하는 것으로 나타나 사용자에게 자격 증명을 묻는 메시지를 표시합니다.

누구에게 의견이 있습니까? 나는 봄 보안의 구현을 파헤 치기 시작했다. 코드와 부두 - nosql을 기억해 두지 만 누군가가 나를 구할 수 있다면 그것을 좋아할 것이다.

또한 해시 기반의 "remember me"토큰과 db가 "remember me"토큰 접근 방식을 모두 시도했으며 두 가지 모두 동일한 문제가 있습니다.

+0

이것은 실제로 진행하기에 충분하지 않습니다. 브라우저가 쿠키를 보내고 있음을 보여주고로드 균형 조정기를 통해 Jetty 인스턴스로 (예 : 들어오는 요청을 덤프) 쿠키를 만들고 해당 요청을 처리하기위한 관련 디버그 로그를 게시해야합니다. 이 정보가 없으면 라우터 구성 문제 일 가능성이 높습니다. 예를 들어 쿠키가 내부 주소 용으로 설정된 것일 수 있습니다. –

답변

0

해결책은 db persisted "remember me"토큰 방식을 사용하는 것입니다. 우리 상황에서는 우리가 사용했다

db persisted token 접근법을 사용하는 우리의 첫 번째 시도는 단순히 오류로 구현되었다. 우리가 올바르게했을 때, 그것은 잘 작동하고 우리의 기억 문제를 해결했습니다.