inflearn logo
강의

Course

Instructor

Kakao, Google SNS Login (springboot3, vue3)

Google Login using oauth2-client

인가 코드 발급(프론트 vs 백)

23

k454656922662

17 asked

0

카카오 데브톡 응답에 따르면 프론트/백엔드 분할 책임 방식이 지양한다고 합니다.

오히려 백에서 로그인 구현을 일임하는 것을 권장합니다.

https://devtalk.kakao.com/t/oauth/136448

 

해당 블로그에서도 책임을 프론트와 백엔드가 나누어 가지는 방식이 잘못되었다고 합니다.

https://cafe.naver.com/xxxjjhhh/296

 

카카오 로그인 REST API에서도 백에서 인가 코드를 받습니다.

https://developers.kakao.com/docs/ko/kakaologin/rest-api#before-you-begin-process

image.png

 

어떤 방식이 맞는지 헷갈립니다.

vue.js spring-boot oauth jwt oauth2

Answer 2

0

bradkim

안녕하세요~! 좋은 질문 주셔서 감사합니다.

 

sns로그인에서 2가지 방법은 항상 고민이 되는 주제입니다.

 

먼저, 백엔드에서 인가코드까지 모두 처리하는 방식은 보안상 이점이 있습니다. 그래서, 교과서적으로 어떤게 더 좋은 방식이냐 하면 백엔드에서 모두 처리 하는 방식이 좋아 보일수 있습니다.

다만, 제가 강의에서 강조한 부분은 현실적인 부분에서 어떤 방식이 더 좋은 방식이냐를 따져봤습니다.

 

먼저, 운영서버에 배포까지 하는 상황을 가정했을때, 백엔드에서 인가코드를 받아오는 방식은 고려해야할 까다로운 부분이 있습니다.

 

또한 디버깅을 해야 하는 상황에서 백엔드에서만 처리하는 방식은 라이브러리에 온전히 의존적이다보니 디버깅 과정을 확인하기가 까다롭습니다.

 

마지막으로 인가코드를 가져오는 클라이언트에서의 보안상 단점이 크리티컬하지 않다는 부분도 말씀드렸었습니다.

 

결론적으로 실제 가장 많이 적용되고 있는 방식이기도 하고, 큰 단점이 없고, 오히려 편의성 측면에서 약간의 장점이 있는 방식이기 때문에 클라이언트에서 인가코드를 받아오는 것을 추천드렸었습니다. 하지만, 둘사이에 엄청난 큰 차이가 있는것은 없다고 보여지는점도 참고하시면 좋을것 같습니다.

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 매콤한각설탕님.

카카오 로그인 인증 과정을 프론트엔드와 백엔드에서 각각 어느 부분을 담당해야 하는지에 대한 혼란을 겪고 계신 것 같습니다. 질문 내용을 잘 이해하였으며, 이에 대한 설명을 드리겠습니다.

1. 백엔드에서 인가 코드 받기 권장

  • OAuth2.0 프로세스에서의 책임 분할: 카카오의 데브톡과 다른 참고 자료에서 권장하는 방식은 백엔드에서 인가 코드를 받는 것입니다. 이는 보안성이 더 강화된 방식으로, 민감한 정보를 프론트엔드에서 다루지 않음으로써 보안 위험을 줄일 수 있습니다.

  • 프로세스:

    1. 백엔드 서버가 카카오 API에 GET /oauth/authorize 요청을 하여, 사용자로부터 인가를 얻기 위한 로그인 페이지를 리다이렉트.
    2. 사용자가 로그인하면, 카카오가 인가 코드를 백엔드 서버로 돌려줍니다.
    3. 백엔드 서버는 이 인가 코드를 사용하여 POST /oauth/token 요청을 통해 액세스 토큰을 받아옵니다.
    4. 이후 백엔드 서버가 이 액세스 토큰을 활용하여 사용자 정보를 가져오거나 서비스를 제공하게 됩니다.

2. 프론트엔드와의 협업

  • 프론트엔드는 주로 사용자의 동의와 인증 페이지 리다이렉션 역할을 하며, 민감하지 않은 정보를 다루는 책임이 있습니다. 기본적으로 사용자가 버튼을 클릭하면 백엔드로 리다이렉션하는 흐름을 주도합니다.

관련 링크와 이미지

이러한 백엔드 중심의 구현은 보안 측면에서 강력한 방법이며, 인가 코드를 백엔드에서 직접 처리함으로써 보안 노출을 최소화합니다. 이러한 방법이 카카오 로그인 뿐만 아니라 많은 OAuth2.0 기반 인증에 있어서 보편적인 권장 방식입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

스프링부트 서버 에러나요

0

9

1

74. 데이터 캐시 - 1 (이론) 강의 영상 누락

0

11

1

2026.04에 추가된 강의 시청 불가

0

12

1

Service Create/Update Record 운용과 Delete Record 미운용의 차이 질문

0

13

1

인텔리제이 MCP 서버 설정 관련

0

17

1

Sequence 관련 질문

1

28

2

Image Only Query

1

26

2

프롬프트, 스킬, sub-agent

0

29

1

도메인 모델에서 관계와 규칙을 구분하는 방법

0

37

2

카카오 클라이언트 시크릿

0

192

2

소셜 로그인 설계

0

95

2

카카오 인가코드 요청

0

103

3

구글 로그인 프론트 화면

0

92

2

github 주소 어디서 확인가능한가요?

0

158

2

안녕하세요 선생님

1

95

1

application.yml에 동일 OAuth2 제공업체의 redirect-uri를 여러 개 등록할 수 있을지 궁금합니다.

0

132

3

안녕하세요 섹션2. 인가코드(프론트에서 발급) 부분에서 질문 있습니다.

0

105

2

filterchain 구성에서 포스트맨으로 테스트시

0

66

2

프론트엔드에서 Auth.js를 사용했을 때, 질문 있습니다.

0

83

1

[질문] 소셜 로그인한 적이 없다면 회원가입 시키기

0

101

2

토큰 생성강의 코드 실행 문의

0

173

1

refresh 와 naver login 도 두번째 강의도 만들어주시면 어떨까요

0

192

2

백엔드 서버에서 소셜 로그인을 전부 처리하는 것에서 질문 있습니다.

0

222

2

강의 내용 문의 입니당

1

205

1