2013-01-11 2 views
1

사용자가 가입하지 않고 페이스 북을 통해 연결할 수있는 스프링 소셜을 사용하는 응용 프로그램을 개발 중입니다. 연결 버튼을 클릭하기 만하면 로그인됩니다.스프링 소셜 및 스프링 보안 : 웹 사이트 리소스 보호

쿠키를 통해 사용자를 추적하고 RESTful API를 사용하여 사용자 대신 Facebook을 호출합니다. 사용자가 oauth 예외에 로그인하지 않은 경우 Facebook에 연결해야하는 로그인 페이지로 리디렉션됩니다. 이는 서비스 측면입니다.

사용자가 웹 브라우저를 통해 연결하고 통계를보고 그의 프로필을 관리 할 수있는 웹 사이트 (또는 대시 보드)도 있습니다.

웹 사이트에 동일한 가입 로직을 시행하고 싶습니다.

e.e. 사용자가 인증되지 않으면 (즉, 요청과 함께 유효한 쿠키를 보내는 경우) 아무도 페이지에 액세스 할 수 없습니다.

스프링 소셜 및 스프링 보안을 사용하여 모든 리소스에서이를 적용하는 가장 좋은 방법은 무엇입니까? (사용자/패스 없음, 쿠키 만 기억하십시오)

P. 나는 Spring-social quick-start 예제를 기반으로 프로젝트를 구축했다. 이 프로젝트에는 HandlerInterceptorAdapter가 있습니다. HandlerInterceptorAdapter는 모든 요청이 해당 어댑터를 거쳐 사용자 정보가 포함 된 SecurityContext를 설정하고 계속 진행할 경우 사용자가 제공 한 쿠키가 데이터베이스에 있는지 확인합니다. 웹 사이트 로그인 결함에이 어댑터를 다시 사용하려고합니다.

Tnx!

+0

두 가지 다른 웹 응용 프로그램입니까? –

+0

API가 있습니다 (페이스 북과 같습니다). http://myservice.com/doSomething, 웹 프로필 (대시 보드) http://myservice.com이 있는데, 둘 다 동일한 API와 통신하므로이 웹 앱을 1 개의 웹 앱으로 볼 수 있습니다. – user1782427

답변

1

모든 웹 사이트 URL을 SpringSecurity로 보호 할 수 있습니다. 사용자가 인증되지 않으면 로그인 페이지로 리디렉션됩니다. 로그인 페이지에서 일반적인 로그인 양식 대신 SpringSocial 등록 버튼을 배치 할 수 있습니다. 이 버튼을 클릭하면 사용자가 Facebook으로 리디렉션됩니다. 인증에 성공하면 애플리케이션으로 리디렉션됩니다. SpringSocial은 사용자가 이미 인증되었음을 SpringSecurity에 자동으로 알릴 수 있습니다. 따라서이 사용자는 문제없이 모든 웹 사이트 URL을 사용할 수 있습니다.

EDIT. 일반적으로 로그인 페이지에서 모든 사용자에 대한 액세스를 허용해야합니다. 귀하의 경우에는 ProviderSignInController (/sign)에 대해서도 수행해야합니다.