스프링 시큐리티: OAuth2 로그인과 리소스 서버 개념 정리
"구글로 로그인" 버튼을 누르면, 내 서버와 구글 사이에서 어떤 일이 벌어지는 걸까요?
ㄹㅁㅇㄹㅁㅇ
ㅁㅇㄹㅁㅇㄹ
주의할 점
1. OAuth2 로그인과 리소스 서버를 혼동하면 안 된다
oauth2Login()은 사용자가 소셜 로그인하는 것이고, oauth2ResourceServer()는 API가 JWT 토큰을 검증하는 것입니다. 하나의 앱에서 둘 다 쓸 때 설정이 충돌할 수 있습니다.
2. 소셜 로그인 후 자체 JWT를 발급하지 않으면 세션에 의존하게 된다
구글 로그인 성공 후 서버의 세션에 인증 정보가 저장되는데, 이 상태로 프론트엔드 SPA와 통신하면 CORS + 세션 문제가 발생합니다. 소셜 로그인 성공 후 자체 JWT를 발급하는 것이 일반적입니다.
3. Authorization Server와 Client/Resource Server를 구분해야 한다
이 글에서 다루는 것은 OAuth2 **클라이언트 **(소셜 로그인)와 ** 리소스 서버 (토큰 검증) 역할입니다. 직접 토큰을 발급하는 ** 인가 서버(Authorization Server) 를 구축하려면 Spring Authorization Server를 사용해야 합니다. 자세한 내용은 Spring Authorization Server — OAuth2 인가 서버를 직접 구축하는 방법을 참고해 주세요.
4. PKCE는 공개 클라이언트뿐 아니라 기밀 클라이언트에도 권장된다
PKCE(Proof Key for Code Exchange)는 원래 모바일/SPA 같은 공개 클라이언트를 위해 설계되었지만, Security 7.0부터는 기밀 클라이언트(서버 사이드)에도 기본 적용을 권장합니다. 인가 코드 탈취 공격을 원천 차단할 수 있기 때문입니다.
댓글 로딩 중...