OAuth

Yeeun·2025년 6월 2일
0

SpringBoot

목록 보기
43/46

1. 인증 코드가 URL에 담긴 채로 리다이렉트되는 시점

  • 구글 등 OAuth 인증 서버에서 인증이 성공하면,
    미리 등록한 redirect_uri(예: http://localhost:8080/login/oauth2/code/google)로 인증 코드가 쿼리 파라미터로 담긴 채 리다이렉트됩니다[5][4].
  • 이때, 인증 코드만 오고, 인증 토큰(access token)은 오지 않습니다.

2. 인증 토큰이 담긴 채로 인가 성공 및 페이지 띄우기

  • Spring Security OAuth2 Client를 사용하면,
    http://localhost:8080/login/oauth2/code/google 경로는 별도의 컨트롤러나 매핑을 만들 필요 없이
    자동으로 인증 코드를 받아서 백엔드에서 인증 서버에 토큰을 요청하고,
    인증 및 로그인 처리를 자동으로 수행합니다[1][3].
  • 즉, 프론트엔드에서 별도의 작업 없이도
    인증 성공 후 로그인 처리(세션 생성 등)가 완료되고,
    원하는 페이지로 자동 리다이렉트됩니다(예: /, /home 등).
  • 만약 인증 성공 후 특정 페이지로 이동시키고 싶다면,
    OAuth2SuccessHandler를 커스터마이즈해서 defaultSuccessUrl 등을 지정할 수 있습니다[3].

3. 직접 토큰을 받아서 처리하고 싶다면

  • 기본적으로는 Spring Security가 자동으로 처리하지만,
    만약 직접 인증 코드를 받아서 토큰을 요청하고,
    토큰을 프론트엔드에 전달해서 페이지를 띄우고 싶다면
    아래와 같이 할 수 있습니다:
    1. /login/oauth2/code/google 경로에 컨트롤러를 직접 매핑하지 않습니다.
      (Spring Security가 이 경로를 자동으로 처리합니다.)
    2. 만약 직접 처리하고 싶다면,
      • Spring Security의 기본 동작을 비활성화하고,
      • 해당 경로에 @GetMapping 등으로 컨트롤러를 만들어서
      • 인증 코드를 받아서
      • 백엔드에서 직접 토큰을 요청(RestTemplate 등으로 https://oauth2.googleapis.com/token 호출)하고
      • 토큰을 프론트엔드에 전달하는 방식이 가능합니다[5][2].
    3. 하지만, 이 방식은 보안상 권장되지 않습니다.
      • 토큰이 프론트엔드에 노출되면 보안 위험이 있습니다.
      • 권장 방식은 Spring Security가 자동으로 처리하고,
        인증 성공 후 원하는 페이지로 리다이렉트하는 것입니다.

4. 정리

  • http://localhost:8080/login/oauth2/code/google 경로는 Spring Security가 자동으로 처리합니다.
  • 별도의 컨트롤러나 매핑을 만들 필요 없습니다.
  • 인증 성공 후 원하는 페이지로 이동시키고 싶다면, OAuth2SuccessHandler를 커스터마이즈하세요[3].
  • 직접 토큰을 받아서 처리하고 싶다면, Spring Security의 기본 동작을 비활성화하고 직접 구현할 수 있지만,
    보안상 권장되지 않습니다.

결론:
Spring Security OAuth2 Client를 사용하면, 인증 코드가 담긴 URL로 리다이렉트된 후 자동으로 인증 및 로그인 처리가 되고, 원하는 페이지로 이동시킬 수 있습니다.
별도의 컨트롤러나 매핑을 만들 필요 없으며, 커스터마이즈가 필요하다면 OAuth2SuccessHandler를 활용하세요.
[1][3][5]

Citations:
[1] https://docs.spring.io/spring-security/reference/servlet/oauth2/client/authorization-grants.html
[2] https://www.javainuse.com/spring/spring-boot-oauth-authorization-code
[3] https://www.baeldung.com/spring-security-5-oauth2-login
[4] https://dzone.com/articles/authorization-code-grant-flow-with-spring-security
[5] https://developers.google.com/identity/protocols/oauth2/web-server
[6] https://spring.io/guides/tutorials/spring-boot-oauth2
[7] https://community.auth0.com/t/redirect-issue-in-spring-security-oauth2-login-flow/119388
[8] https://docs.spring.io/spring-security/reference/servlet/oauth2/login/advanced.html
[9] https://stackoverflow.com/questions/77295008/how-to-extract-access-token-from-oauth2-flow-in-spring-boot-client
[10] https://docs.spring.io/spring-security/site/docs/5.2.12.RELEASE/reference/html/oauth2.html
[11] https://www.youtube.com/watch?v=LM_Bnhf26Ew
[12] https://stackoverflow.com/questions/54101502/how-change-the-default-spring-boot-oauth-urls-login-oauth2-code-and-oauth2-au
[13] https://stackoverflow.com/questions/77222406/how-do-i-create-a-custom-redirect-controller-for-spring-boot-2-using-oauth2-clie


Answer from Perplexity: pplx.ai/share

0개의 댓글