ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring Boot] 카카오 로그인 - 1
    Backend/개발 2022. 5. 1. 13:20
    반응형

    oauth 로그인을 구현하는 방법

    oauth의 기본 로직은 다음과 같다.

     

    출처 : https://datatracker.ietf.org/doc/html/rfc6749

    보통 OAuth의 인증 종류(grant type)으로 Autorization Code을 주로 사용한다.

     

    1. Resouce Owner로 부터 리소스 사용 동의를 받으면 Authorization Server는 Client에게 Token을 발급해준다.
    2. Client는 Token을 가지고 Resource Server에게 Resource Owner의 정보를 요청한다.
    3. Client는 받은 정보를 이용해서 로그인을 진행하거나, 추가적인 회원가입으로 애플리케이션에 필요한 기능을 개발한다
    4. Access Token이 만료되면 웹페이지를 사용하고 있는 Resource Owner모르게 Authorizaion Server에게 refresh token을 이용해 새로운 accessToken을 발급받고, 2~3을 반복한다.
    5. 이런 식으로 oauth를 이용한 로그인이 진행되고 3,4번은 oauth에서 발급받은 토큰을 사용할 수도 있고 jwt 토큰을 사용해서 서비스만의 로그인을 다시 구현할 수도 있다.   

    보통 SSR 방식으로 템플릿 엔진을 이용해서 백엔드로만 서비스를 구현하면 Spring Security+oauth2-client를 사용해서 쉽게 로그인할 수 있다.  spring security를 사용하면 code, token, user info 발급 등이 다 자동화되게 구현할 수 있다. 

     

    그런데 프론트엔드와 백엔드를 분리해서 로그인을 구현하게 되면  프론트엔드단에서 code나 token까지 발급해주고 로그인 요청으로 jwt 토큰을 발급해주는 방식을 많이 사용하는데 그럼 굳이 Spring Security를 쓰지 않아도 HTTP Client로 직접 Oauth api 요청을 보내서 구현할 수 있다. 

     

    그래서 한번 HTTP Client를 이용해서 직접 카카오 로그인을 구현해보려고 한다. 

     

    대략 이런 흐름으로 동작한다. 

     

    1. 준비

     

    Authorization Code 발급

    GET /oauth/authorize?client_id=${REST_API_KEY}&redirect_uri=${REDIRECT_URI}&response_type=code HTTP/1.1
    Host: kauth.kakao.com

    REST API KEY , REDIRECT_URI에 준비에서 발급, 설정한 값 입력하고 GET 요청

     

    @RestController
    public class OAuthController {
        @GetMapping("/oauth/kakao/callback")
        public String authCallback(String code){
            return code;
        }
    }

    redirect uri에 해당하는 path로 컨트롤러를 생성하면 code를 받을 수 있다. 

     

     

    2. Access Token 발급

    발급받은 code를 이용해서 HTTP Client 모듈을 이용해서 카카오에 HTTP 요청을 보내 토큰을 발급받아야 한다. 

    다음에 계속 . . 

     

    댓글

Designed by Tistory.