2012-11-04 2 views
2

cas 위키에 스프링 보안 튜토리얼을 사용하여 스프링 보안에 CAS를 통합했습니다. 이제 현재 사용자를 얻고 싶고 어떻게해야할지 모릅니다!CAS와 통합 된 봄 보안의 현재 사용자를 얻는 방법?

스프링 보안 또는 CAS에서 받아야합니까?

SecurityContextHolder.getContext().getAuthentication() 반환 값 : |

답변

0

발견! 내 자신의 액세스 제어 시스템을 사용하려고했기 때문에 URL에 액세스하기 위해 사용자의 역할을 확인해야하는 필터를 언급했습니다. 분명히 URL을 가로 채지 않으면 스프링 보안의 컨텍스트에 액세스 할 수 없습니다 (또는 적어도 그렇게 보입니다!) 나는 문서의 열렬한 팬이 아니므로 코드를 시험해 봅니다. 예외가 발생하면, 나는 그 일을 그만 두어야한다! 어쨌든 이제 URL을 가로채는 SecurityContextHolder.getContext(). getAuthentication()은 더 이상 null을 반환하지 않는다.)

+0

나는이 문제에도 직면하고 있습니다. 솔루션을 자세히 설명해 주시겠습니까? – Swapnil

+0

필자의 경우, 스프링 보안 구성에서 URL을 가로 채기 위해 줄을 주석 처리했기 때문에 문제가 발생했습니다. 사용자가 인증되었는지 확인하는 인터셉터가 있습니다. 그런 것을 찾아라! – AmirMV

0

SecurityContextHolder.getContext(). getAuthentication()이 null이면 사용자가 아직 인증되지 않았 음을 의미합니다. CAS에

일부 포인터

  1. 당신이 이렇게 CAS 는 SSL 포트 (443 또는 8443)에서 호스팅되어야합니다 CAS의 통신을 위해 SSL을 사용하고 있는지 확인

  2. 이 있는지 확인하십시오 당신이 봄 CAS가 SSL 서버를 통해 Spring을 호출 할 수 있도록 애플리케이션이 SSL 포트에서 호스팅됩니다.

일반적인 오류는 CAS와 스프링 애플리케이션 모두 SSL 포트에 없다는 것입니다. 이 경우, www.startssl.com에서 무료 SSL 인증서를 얻으십시오.

+0

나는 알고있다! 로그인 및 SSO에는 문제가 없습니다. 두 응용 프로그램 모두 https에 있습니다 ... – AmirMV

+0

그 경우, URL이 Spring Security에 의해 보호되는 컨트롤러에서 SecurityContextHolder.getContext(). getAuthentication()이 호출되었는지 확인하십시오. 즉, 로그인하지 않고 페이지에 액세스 할 수 없습니다. –

+0

있습니다. 그것도 아무 문제 없어! URL을로드하려고하면 CAS (https)로 리디렉션되고 로그인 한 후에 현재 사용자를 얻을 수 없습니다. – AmirMV

관련 문제