본문 바로가기
Backend/문제해결

[Kotrip] Kakao 인증 구현하기

by 박상윤 2024. 3. 7.

졸업작품 프로젝트 Kotrip의 로그인 방식을 Kakao 인증으로 구현을 하려고 한다.

Spring Security는 사용하지 않고 Oauth 방식만 사용하려고 한다.

 

Spring Security vs OAuth

 

Spring Security

- 스프링 기반 애플리케이션의 보안을 위한 표준

- 인증(Authentication)과 인가(Authorization) 기능을 가진 프레임 워크

 

인증이란?

어떤 개체(사용자 또는 장치)의 신원을 확인하는 과정

ex) 회원가입, 로그인 등

 

인가란?

어떤 개체가 어떤 리소스에 접근할 수 있는지 또는 어떤 동작을 수행할 수 있는지 검증하는 것, 접근 권한을 얻는 것

ex) 게시물 수정,작성,삭제 등

Spring에서 확장성을 고려하여 설계되었기 때문에 다양한 요구사항을 손쉽게 추가하고 변경할 수 있다.

 

OAuth

비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로 사용되는 접근 및 위임을 위한 개방형 표준

 

ex) 소셜 로그인

 

왜 OAuth를 사용하는가?

로그인을 직접 구현할 경우 필요한 부분들을 OAuth 제공 플랫폼에 맡기게 되어 프로젝트의 비즈니스 로직에만 집중할 수 있다.

 

우선

카카오 Developers 사이트에 들어가서 client-key를 발급받아야 한다.

 

 

Kakao Login Flow

 

구글링을 하다가 Webflux에 대해 보게되어, 간단하게 정리를 해보았다.

Spring Webflux

SpirngMVC vs Spring Webflux

 

(1) SpringMVC

Blocking / 동기 방식으로 동작한다.

요청이 발생할 경우, 스레드풀 내 스레드 하나를 점유해 요청을 처리한다.

 

(2) Spring Webflux

Non-Blocking / 비동기 방식으로 동작한다.

요청이 발생할 경우, event-Loop가 돌아서 해당 이벤트를 처리하는 핸들러에게 처리를 위임하고, 처리가 완료되면 callback 메소드 등을 통해 응답을 반환한다.

 

Spring Webflux를 왜 사용하는가?

(1) Spring MVC에 비해 적은 스레드를 이용하여 동시성을 핸들링한다.

(2) 서버 자원을 낭비하지 않고 효율적으로 동작하는 것을 목적으로 사용한다.

 

SpringMVC의 Tomcat 서버에서는 스레드 수가 기본적으로 200개가 존재한다.

서버에 요청이 많지 않은 경우, 노는 스레드가 발생하고, 그만큼 자원이 낭비된다.