API

[ 카카오 - 로그인 ] SDK / RestAPI 차이

quantumee 2023. 11. 27. 11:04

SNS로그인 API를 쓰면 서비스의 자체 회원가입 없이 사용자들이 쉽게 서비스를 이용할 수 있게된다.

그 SNS로그인 중에 이번엔 카카오 로그인에대한 정보를 리뷰한다.

 


1. 개념 설명

카카오 로그인의 기본 구조는 JWT**방식이다.  ( ** 밑에 링크 참고 ) 

 

간략한 설명으로

JWT는 access토큰과 refresh 토큰으로 이루어져 있어서 토큰을 활용해 로그인을 했다는 인증을  받는 방식이다.

access 토큰은 인허가를 담당하고 access토큰의 유효기간 연장을 refresh토큰이 담당한다.

 

카카오 로그인도 마찬가지로 로그인에 성공하면 토큰을 부여하고 개발자는 이 토큰을 활용해 서비스의 로그인 인증과 권한관리를 하게 된다.

 

 

 

[ JWT ] JWT를 활용한 로그인

JWT ( Json web Token ) Json web Token의 약자이다. 이름 그대로 json형태로 웹에서 사용하는 토큰이다. JWT는 기존의 세션에서 관리하던 로그인 정보를 클라이언트가 관리하도록 설계한 정보 관리 방식이

segnohong.tistory.com


2. 구조 설명

토큰을 받기 위해서 진행야되는 절차는 다음과 같다.

 

 1. 카카오에 인증 요청 - 사용자는 이 요청 과정에서 카카오에 로그인을 해야한다.

- SDK 방식

 2. 토큰 발급 

 3. 사용자 정보 요청 ( 토큰 필요 )

- RestAPI 방식

 2. 인증 코드 발급

 3. 토큰 발급

 4. 사용자 정보 요청 ( 토큰 필요 ) 

 

이렇게 SDK 와 RestAPI 가 조금 다른 절차로 진행된다.


3. SDK / RestAPI 차이

SDK와 RestAPI 방식의 차이는

첫번째 처리하는 장소

두번째 범용성

이 두가지를 뽑을 수 있겠다.

 

SDK는 보통 client단에서 요청 응답이 진행된다. rest api보다 코드 진행이 단순하지만

복수의 클라이언트가 하나의 서버를 공유할 경우 최소한 클라이언트 수 만큼의 코드 처리가 필요하다.

또한 안드로이드버전이나 자바스크립트 버전을 쓸 경우 코드 진행도 전혀 달라 서로 호환이 불가능하다는 게 단점이다.

 

반대로 RestAPI 방식은 Server에서 코드 처리가 가능하다. 그렇다보니 복수의 client가 서버에 있는 하나의 코드에 요청만 하면 되므로 훨씬 효율적이라 할 수 있다. 하지만 서로다른 환경의 클라이언트의 요청에 응답해야하기 때문에 

코드 진행과정에서 고려해야할 점이 많고 코드도 조금 복잡해지는 경우가 있다.

( 안드로이드 / IOS 같이 앱에서도 restAPI로 실행 할 수는 있지만 모바일 웹으로 이동해서 로그인 해야되는 번거로움 때문에 보통은 앱은 SDK를 쓴다. 앱이 SDK를 쓸 경우 핸드폰에 다운로드 되어있는 카카오톡을 기반으로 로그인이 된다.)


4. 사용자 정보 요청

로그인에 성공해 받은 토큰을 활용하면 로그인한 사용자의 정보를 요청할 수 있다.

하지만 모든 정보를 누구나 가져올 수 있는 건 아니다.

 

기본적으로 개발자 버전으로 제공하는 정보는 닉네임 정도가 있다.

회원을 구분 식별하는 용도로 쓰기에는  부족한 데이터다 보니 아쉬움이 남는다.

 

그래서 하는 게 BIZ 인증이다.

개발자 BIZ인증을 하면 진짜 Bussiness인증을 하는 만큼은 아니지만 개발자버전에서만 제공하는 정보 외의

이메일 등의 추가적인 사용자 정보 확보가 가능하다.

 

그외의 이름이나 카카오스토리 연동 등을 하고 싶다면 정식으로 Bussiness인증을 해야한다.

 


 

다음은 SpringBoot와 JSP로 카카오 로그인을 만든 코드 리뷰를 하겠습니다