스프링부트 강좌 63강(블로그 프로젝트) - 카카오 로그인 OAuth2.0 개념이해
세상에는 무한대의 페이지들이 있다.
홍길동이라는 사람은 A, B, C 사이트에 가입한다. 나는 실제 세상에서 1명인데 인터넷 세상에서는 내가 사이트의 개수만큼 존재하게 된다. 그 말은 내 개인정보가 노출되어있다는 의미이다.
아이디와 비밀번호를 변경하기도 하고, 중국이나 다른 나라들로 팔려나가는 일들이 많다.
한군데에서 관리하는 게 개인정보를 지키는 게 더 효과적일 것이다. 제일 먼저 생각한 것은 국가에서 주도적으로 만들어서 처리할 것이라고 생각했는데..그건 아니고 대형 포털 사이트가 관리하게 된다.
대표적으로 네이버와 카카오에서 우리의 개인정보를 관리해서 로그인 처리를 해준다. 그냥 내가 네이버 아이디가 있으면 그것을 통해 다른 사이트들을 가입할 수 있다.
네이버가 털리면 모든 게 다 털린다. 그러면 여기 비번을 빠르게 바꾸면 동시에 다른 사이트들도 예방될 수 있다..
내가 만든 블로그 사이트에 로그인을 위해 회원가입을 할 것이다. 회원가입을 하지 않고 네이버나 카카오의 아이디가 있기 때문에 네이버 아이디로 로그인을 하게 되면 인증처리에 대한 수고를 덜 수 있다. 회원가입, 회원탈퇴, 휴명계정 등등 이것을 네이버에 넘길 수 있다.
우리가 쇼핑몰을 운영한다고 하자. 네이버를 이용해서
네이버에서는 아이디, 패스워드, 닉네임만 갖고 있다고 하자. 그럼 쇼핑몰은 서비스 할때 개인들에 대한 주소가 필요하다.
어떤 물건을 배송하기 위해서는 그 주소로 배송을 해줘야 한다. 그럼 쇼핌몰 자체에서 따로 주소를 관리해야 하므로 네이버와 연동하는 서비스를 구축해야 한다.
주소정보나, vip 주소 등을 연동하는 서비스를 구축해야 한다.
간단하게 하면 인증 처리만 하는 거고 독자적인 회원 정보들이 따로 필요하다면 따로 구축을 해야 한다.
OAuth2.0 이란?
open Auth : 인증 처리를 대신 해준다.
홍길동이 블로그 사이트에 로그인 요청을 한다. 그럼 응답을 해준다.
홍길동은 클라이언트, 블로그가 서버가 된다. 근데 oauth로 넘어가면 개념이 약간 달라진다.
카카오로그인 요청을 한다. 이때 사실 블로그 쪽으로 요청을 하는게 아니라 홍길동이 다이렉트로 카카오 서버쪽으로 로그인 요청을 하게 된다.
이 회원 정상적인 회원이네? 블로그 서버로 콜백해준다. 이 친구 정상이라면서..이때 코드 값을 주는데..임의의 값이다. 이 홍길동이라는 회원이 카카오 서비스를 통해 인증이 정상적으로 되었음을 알게 된다.여기서 끝나면 인증처리 완료이다.
블로그 서버가 권한을 부여받았다. AccessToken을 받았다는 의미이다. AccessToken 으로 블로그 서버가 홍길동 대신 홍길동의 정보에 접근할 수 있는 열쇠를 가지고 있을 수 있다.
홍길동은 원래 카카오가 들고있는, 홍길동에 접근할 수 있는 권한이 있다. 주인이기 때문에.. 하지만 블로그 서버는 권한이 없는 서버이다. 누구나 홍길동에 접근할 수 있지 않는다.
인증을 받았다는 것은 그냥 인증을 받은 거고, acessToken은 카카오에 있는 내 정보에 접근할 수 있는 권한을 위임했다고 생각하면 된다.
전체적인 틀은 홍길동은 내 카카오 정보에 접근할 수 있는 위임을 제공했다고 생각하면 된다.
OAuth2.0 로그인은 크게 두가지로 생각하면 된다.
첫번째는 인증을 처리하기 위한 것
두번째는 인증 처리가 완료된 다음 홍길동 정보에 접근할 수 있는 권한을 받는 것
스프링에서 공식적으로 제공해주는 OAuth 주체는 페이스북과 구글이다. 그래서 공식적으로 제공해주는 OAuth-client 라이브러리가 있는데 권한 처리를 굉장히 쉽게 처리시켜준다.
스프링의 Security에서 resource server 등을 만들 수 있는 라이브러리등을 제공해주기도 한다.
우리가 네이버나 카카오 등등 이런 서비스들을 할 것이다. 대표적인 포털사이트가 있을 것이다.
네이버나 카카오로 OAuth 라이브러리를 사용하는 방법도 있을 것이다.
다음 시간에는 이 로직을 직접 짜보기로 할 것이다.
-이 글은 유투버 겟인데어의 스프링 부트 강좌를 바탕으로 정리한 내용입니다.-