강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

성호님의 프로필 이미지
성호

작성한 질문수

생산성을 향상시키는 스프링부트 기반의 API 템플릿 프로젝트 구현

카카오 토큰 발급 구현 (2) - 토큰 받기

카카오토큰관련

작성

·

34

0

안녕하세요 질문이있는데요

 

제가 예전에는 security에서

http.oauth2Login(oauth2Login -> oauth2Login

.loginPage("/login")

.userInfoEndpoint().userService(customOAuth2UserService));

 

이런식으로 oauth를 했었던거같은데 해당강의는 시큐리티를 적용안하고 바로 카카오로 회원가입을 진행시키는걸까요?

 

근데 궁금한게 제가 예전에 했을때는 저런 토큰을 안하고OAuth2User 이걸로 이용해서 가입을 시켜서 로그인을 했던거같은데 어떤차이가있는걸까요 해당강의에서 FeighClient를이용해서 토큰을 요청을하는게 훨씬 복잡해보이는데 어떤장점이있는지도 알려주시면감사합니다 시큐리티했을때는 그런작업이 없었던거같아서요

 

jwt를 이용하는거면 소셜로회원가입을 시키고 그 가입된걸 jwt를 이용하면되는거아닌가싶어서요 카카오토큰은 왜받는지 잘 모르겠습니다

답변 2

0

구파고님의 프로필 이미지
구파고
지식공유자

안녕하세요. 질문 답변드립니다.

예전에 작업하실 때는 아마 spring oauth2 client 같은 라이브러리를 사용하셨을 겁니다.

해당 라이브러리에 기능이 이미 추상화되있고 설정만 진행하면 되는 것이죠.

내부적으로는 저희가 진행한 카카오토큰을 발급 받고 카카오토큰을 이용해서 카카오에 가입된 회원 정보를 불러오고 있습니다.

실제 현업에서 일을 하시다보면 현재 강의에서처럼 API 문서를 보고 API를 호출해보고

직접 연동해야하는 일들이 빈번합니다. 그리고 이렇게 직접 연동해보지 않으면 사용하시는 라이브러리가 어떻게

동작하는지에 대한 이유는 알 수 없고, 그냥 이렇게 설정하면 되는구나하고 넘어가게됩니다.

직접 카카오 API 문서를 보고 소셜로그인을 붙여 본다면 우리가 사용하고 있는 spring oauth2 client 같은

라이브러리도 내부적으로는 다 이런 과정들을 통해서 연동하고 있음을 알 수 있고, 꼭 소셜 로그인 API가

아니더라도 카카오나 네이버 구글 등에서 제공하는 API들을 연동해보는 즐거움을 느껴보실 수 있을 겁니다.

(ex) open ai 이미지 생성 api 연동, 구글 text to speech api 등등등

또 하나 헷갈리시는거 같은 개념을 짚어 드리면 JWT와 카카오토큰의 역할이 아래와 같이 다릅니다.

- JWT 발행 : 우리가 제공하는 API를 사용하기위한 인증 토큰

- 카카오토큰: 카카오가 제공하는 API를 사용하기 위한 인증 토큰.

카카오에서 회원정보를 가져와서 우리 서비스에 회원 가입을 시키기 위해서 카카오토큰을 발행함.

0

안녕하세요, 인프런 AI 인턴입니다. 성호님.

질문 주신 내용이 많은 개발자들이 혼란스러워할 수 있는 부분입니다. 각 방식의 차이점과 장점에 대해 설명해드리겠습니다.

Spring Security vs Feign Client를 사용한 OAuth2 처리

  1. Spring Security를 통한 OAuth2 처리:

    • Spring Security는 인증 및 권한 부여를 쉽게 설정할 수 있는 프레임워크입니다.
    • OAuth2User와 같은 빈을 통해 사용자의 정보를 쉽게 얻을 수 있으며, 이를 기반으로 사용자 인증 및 회원 가입을 처리합니다.
    • 시큐리티 설정을 통해 다양한 인증을 자동화할 수 있고, 관련된 많은 설정을 덜어낼 수 있습니다.
  2. Feign Client를 통한 OAuth2 처리:

    • Feign 클라이언트를 이용해 직접 HTTP 요청을 해서 토큰을 받는 과정은 커스터마이징하며 복잡해 보일 수 있습니다.
    • 이를 통해 더 세세한 수준에서의 요청 및 응답 처리를 직접 관리할 수 있고, 복잡한 비즈니스 로직을 수행하는 데 유리할 수 있습니다.
    • 명시적인 요청과 응답 처리로 인해 클라이언트와 서버 간의 통신이 더 이상적이거나 특별히 커스터마이징 필요한 경우 유리합니다.

카카오 토큰과 JWT의 활용

  • 카카오 토큰: 카카오 서버와의 통신을 통해 사용자 데이터를 얻거나, 다른 카카오 관련 API를 호출할 때 필요합니다.
  • JWT: 자체 서비스 내에서 사용자의 인증 상태 유지를 위해 사용됩니다. 즉, 카카오 서버에서 인증된 사용자를 위해 자체 JWT를 발급하여 세션 상태를 관리합니다.

합리적 사용 선택

  • Spring Security: 간편하고 표준적인 방식으로 빠르게 OAuth2 인증을 구현하고자 할 때 적합합니다.
  • Feign Client 등 커스터마이징: 서비스 특성에 맞게 더 세밀한 제어 및 로직이 필요할 때 혹은 기존의 Spring Security로 해결하기 힘든 특수 요구 사항이 있을 때 유리합니다.

이러한 차이를 이해함으로써, 두 접근법 중 적절한 것을 선택하는 데 도움이 되기를 바랍니다. 관련된 자세한 설명을 제공하고 있는 답변을 참고하실 수 있는 질문 URL은 다음과 같습니다:

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

성호님의 프로필 이미지
성호

작성한 질문수

질문하기