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

fnelclsrn123님의 프로필 이미지
fnelclsrn123

작성한 질문수

스프링 시큐리티 OAuth2

인증 코드를 통해 발급 받은 토큰의 관리

작성

·

23

·

수정됨

0

안녕하세요 강사님 OAuth2 로그인을 구현하고 회원 탈퇴를 위해 구글과 카카오의 unlink API를 호출하려는데, 소셜 로그인 과정을 시큐리티가 자동으로 처리해주고 있어서 API 호출에 필요한 토큰이 관리되고 있지 않은 상황입니다. 이럴 때 어떤 방식으로 토큰을 받아야 하는지 궁금합니다.

제가 생각해본 방법은 다음 두가지가 있습니다.

첫 번째 방법 : 인증 코드를 직접 요청하고, 반환 받은 인증 코드로 토큰 또한 직접 요청

두 번째 방법 : 설정해둔 리다이렉트 URI에 대한 처리를 직접 구현 후, 인증 코드를 받고, 해당 인증 코드로 토큰을 직접 요청

혹시 이중에 맞는 방법이 있는지, 아니면 시큐리티의 자연스러운 흐름안에서 토큰을 받을 방법이 있을까요?

보통 어떤식으로 토큰 값을 받는지 궁금합니다!

답변 1

0

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

OAuth2 로그인을 구현하면서 소셜 로그인의 unlink API를 호출하기 위해 토큰을 관리하는 방법에 대해 고민 중이시군요. 시큐리티가 자동으로 소셜 로그인을 처리하며, 여기서 외부 API 호출에 필요한 토큰 관리 부분은 직접적으로 다루지 않는 경우가 많습니다. 따라서 어떤 방법으로 이것을 처리할 수 있을지 궁금하실 수 있습니다.

일반적으로 OAuth2를 통해 토큰을 관리하는 두 가지 방법을 고려할 수 있습니다:

  1. OAuth2 Client 활용: Spring Security의 OAuth2 Client 모듈을 활용하면 소셜 로그인 과정에서 필요한 토큰을 더욱 쉽게 관리할 수 있습니다. OAuth2AuthorizedClientService를 사용하여 로그인 후 Authorization Code로 Access Token을 교환하고, 그 토큰을 사용할 수 있도록 하는 방식입니다. 이 과정을 스프링 내장 클래스를 활용하여 리소스 서버 접근에 필요한 토큰을 쉽게 관리할 수 있습니다.

  2. 리듬에 맞춘 커스텀 핸들링: OAuth2 Authentication Success Handler를 커스터마이징하여 로그인 성공 시점에 필요한 토큰을 받아오고, 이를 별도로 저장하는 방식입니다. 이 과정에서는 Access Token 뿐만 아니라 추가적으로 Refresh Token을 관리할 수 있습니다.

각자의 상황에 따라 방법이 다를 수 있으며, 일반적으로는 OAuth2 Client 모듈을 최대한 활용하여 토큰 관리를 간소화하는 것이 권장됩니다. 위에 언급된 링크들을 참고하여 더 구체적인 설명과 구현 사례를 확인해보시길 권장합니다.

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

fnelclsrn123님의 프로필 이미지
fnelclsrn123

작성한 질문수

질문하기