2012-04-16 2 views
2

나는 spnego를 사용하여 kerberos를 통해 사용자를 인증하는 Java/Tomcat 응용 프로그램 용 필터를 만들었습니다. 사용자가 IWA (Windows 통합 인증)를 사용하지 않는 경우를 제외하고는 훌륭하게 작동합니다. 필터가하는 첫 번째 작업은 브라우저에서 협상을 시작하기 위해 SC_UNAUTHORIZED (401)로 설정됩니다.상태를 지우는 방법 401 HttpServletResponse.SC_UNAUTHORIZED?

httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED, true); 

이렇게되면 동일한 경로가 실행되어 계속해서 실패하고 빈 페이지가 표시됩니다. 내가 한 것은 세션 변수를 추가하여 실패 횟수를 계산합니다. 세 번 실패한 후 SC_UNAUTHORIZED를 지우고 페이지를 계속로드하려고합니다. 이 모든 것은 사용자가 사이트에 로그인하게되지만 로그인하지 않는다는 것을 의미합니다.

내가 깃발을 취소하려면이 옵션을 시도했지만 전혀 아무것도하지 않는다 :

System.out.println("check status 1: " + httpResponse.getStatus()); 
httpResponse.setStatus(HttpServletResponse.SC_OK); 
System.out.println("check status 2: " + httpResponse.getStatus()); 

모두 인쇄가 나는 두 번째는 당신이 SC_UNAUTHORIZED을 변경하려면 어떻게 200이 될 것으로 예상 한 것 (401) 아직도 일단 그것이 설정되었습니다? 나는 내가 방금 무언가를 놓치고 있다는 것을 압니다.

httpResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED); 

기본 인증 경우, 당신은 또한 sendError하기 전에 헤더를 설정할 수 있습니다 :

+0

을 그 폼 기반 인증을합니까? –

답변

0

는 다음과 같은 시도 했 서블릿로 리디렉션 어쩌면 당신은 보낼 수

httpResponse.setHeader("WWW-Authenticate", "Basic realm=\"mycustomrealm\"");