질문드립니다!
- FE: React Native + Expo + js SDK
- BE: Spring Boot
위와 같은 환경에서 웹과 앱 모든 플랫폼에서 소셜 로그인을 지원하는 인증인가 시스템을 구현한다고 한다면,
다음과 같은 흐름으로 진행하는 것에 보안적으로 문제점이 있을까요?
- app: client가 accessToken을 server로 전달 → server는 검증 후 json body에 서비스 accessToken을 전달
- web: client가 authorizationCode를 server로 전달 → server는 검증 후 HttpOnly Cookie 기반으로 전달
*추가로 모바일 환경에서 웹뷰가 아닌 인앱에서 소셜 로그인을 수행하기 위해서는 Andrioid/IOS SDK를 각각 사용하는 것이 맞을까요??
tim.l
2
안녕하세요.
Spring Boot에서 oauth2-client만 추가하면 인증을 설정베이스로 안전하고 간단히 처리가능한데요 FE에서 accessToken조회해 BE로 전달하는 특별한 이유가 있으신가요?
아키텍쳐는 운영하시는 서비스 특성에 따라 적절히 취사 선택하시면되나.
Spring Boot 사용할때, 일반적으로는 백엔드에 카카오와 교신을 일임합니다.
FE는 BE하고만 교신하여 고립 시키는 것이 보안 및 확장성에도 좋습니다.
참고. 보안 권장 사항
참고. Spring에서 카카오 로그인 사용하기 - Spring Security 5, OAuth 2 - deprecated 대응 2023년 6월 27일
그럼에도 불구하고 운영상 이점이나 시스템 필요에 따라 말씀하신 방법들로도 구축하는 경우가 있긴합니다.
액세스 토큰 또는 인가코드를 탈취당했을때 적절한 대응책만 있다면 상관없습니다.
*추가로 모바일 환경에서 웹뷰가 아닌 인앱에서 소셜 로그인을 수행하기 위해서는 Andrioid/IOS SDK를 각각 사용하는 것이 맞을까요??
OAuth2는 브라우저기반 리다이렉트로 동작하는 소셜로그인 표준 방식입니다.
어떤 방법을 사용하건 브라우저(웹뷰) 리다이렉트는 발생하지만, Andrioid/IOS SDK를 사용하시면 카카오와 교신을 SDK가 모두 처리 하므로 간결한 장점은 있습니다.
참고 부탁드려요.