카카오 소셜 로그인 구현 REST API

카카오 소셜 로그인 구현 REST API

이번 프로젝트에는 OAuth 2도 적용을 해보기로 하였습니다. 너무 설렌다. Google과 Naver도 해볼까 했지만 나중에 메시지도 보내야 하고 OAuth2로만 로그인 시키는 것이 편할 것 같다는 생각에 우선적으로 카카오만 하기로 했다. Google OAuth 2는 두 번 정도 사용해 본적이 있지만 카카오는 처음이라 기록을 남기고자 합니다. 다음에 또 할 수도 있으니까.? 본인이 보기 위해 기록물을 작성하는 카카오톡 OAuth 2 구현하기 나는 Web을 이용할 것이기 때문에 web으로 하였고 아직 서버 건설 전이기에 localhost로 등록했다.

 



카카오 소셜 로그인 구현 REST

주요 추가 의존성

Spring WebSpring MVC를 사용해 RESTful을 포함한 웹 애플리케이션을 빌드합니다. 서버 내에서 요청을 송신하기 위한 클라이언트 역할을 수행할 수 있는 RestTemplate을 내재하고 있습니다. Lombok생성자, Getter와 같이 반복적으로 재사용되는 코드들을 어노테이션을 부여하는 방식으로 정의할 수 있어요.

본 서버 애플리케이션에서는 카카오 인가 서버로부터 반환받은 액세스 토큰을 클라이언트 애플리케이션에 직접 반환해 활용하는 방식으로 구현하였으나, 서버가 전달받은 액세스 토큰을 사용해 카카오 API 서버에 사용자의 정보를 요청해 반환받은 뒤 해당 정보를 조합하거나 별도의 비즈니스 로직을 거쳐 서버에서 사용할 리소스로 변환해 영속화하고, 해당 리소스를 인코딩하는 식으로 자체적으로 액세스 토큰을 만들어 반환하는 방식으로 구현할 수도 있습니다.

주요 추가 의존성

리소스 획득

7. 이용자 서버 애플리케이션은 카카오 계정 소유자의 허가된 개인정보를 카카오 API 서버에 요청합니다. 요청 헤더에는 카카오 인증 서버로부터 반환받은 액세스 토큰을 포함합니다. 8. 카카오 API 서버는 액세스 토큰이 유효할 경우 카카오 계정 소유자의 허가된 개인정보를 에 포함해 응답으로 반환합니다. 9. 이용자 서버 애플리케이션은 반환받은 카카오 계정 소유자의 개인정보에서 식별자 등을 사용해 이용자 애플리케이션에서 사용할 액세스 토큰을 생성해 반환합니다.

이 과정에서 필요합니다.면 이용자 식별을 위한 리소스를 생성해 서버에 저장합니다. 해당 플로우를 따르는 간단한 클라이언트, 서버 애플리케이션을 구현해보았습니다.

Kakao Developers에 애플리케이션 등록

다음의 링크를 통해 Kakao Developers의 내 애플리케이션으로 이동합니다. 이루어지는 소셜 로그인 애플리케이션과 연동하기 위해 애플리케이션 추가하기를 수행합니다.

 



권한 부여

사용자가 카카오 아이디로 로그인 버튼을 눌러 카카오 로그인을 시작하면, 클라이언트 애플리케이션은 Kakao.Auth.authorize 함수를 호출합니다. 이때 인자 객체의 요소로는 클라이언트 애플리케이션에 대한 권한 부여가 성공했을 경우 리다이렉트할 URI인 redirectUri 값을 제공합니다. 해당 URI로는 카카오에 등록한 리다이렉트 URI를 부여해야 합니다. authorize 함수의 구체적인 레퍼런스는 다음의 링크에서 확인할 수 있어요.

액세스 토큰 발급

4. 이용자 클라이언트 애플리케이션은 등록했던 리다이렉트 URI에서 이용자 서버 애플리케이션에 로그인하기 위한 액세스 토큰 요청을 송신합니다. 이때 요청 에 인증 코드를 포함합니다. 5. 이용자 서버 애플리케이션은 전달받은 해당 인증 코드를 사용해 카카오 인증 서버에 액세스 토큰 발급을 요청하는 POST 요청을 송신합니다. 6. 카카오 인증 서버는 인증 코드가 유효할 경우 카카오 계정 소유자의 허가된 개인정보에 접근할 수 있는 액세스 토큰 및 관련 내용들을 에 포함하여 응답으로 반환합니다.

자동 로그인 설정하기

윈도우10 비밀번호 해제를 했더라도, 윈도우 로그인 화면이 나오긴 합니다. 그때 그냥 확인을 눌러주시면 윈도우에 진입하게 됩니다. 하지만 그 화면조차 뜨는 시간이 아깝죠? 바로 윈도우로 진입하게 만들 수 있는 방법이 있습니다. 윈도우키를 눌러주신 후에 netplwiz를 검색해 주시면 이용자 계정 설정 메뉴가 나오게 됩니다. 이용자 탭에 있는 이용자 이름, 암호를 입력해야 컴퓨터를 사용할 수 있음 이라는 부분이 보이실 겁니다.

이 부분에 체크가 되어있었다면 해제를 해주시면 됩니다. 그 다음 확인을 누르시면 자동 로그인에 대한 암호를 입력하라 나오는데요. 여기에서 윈도우 로컬 계정의 암호를 입력해 주면 됩니다. 윈도우10 비밀번호 해제를 해두었기 때문에 공란으로 놔둔 채 확인을 누르셔도 됩니다. 위의 설정들을 하셨다면, 이제 피시를 켰을 때 윈도우 로그인 화면조차 없이 바로 윈도우에 진입해보실수 있습니다.

자주 묻는 질문

주요 추가 의존성

Spring WebSpring MVC를 사용해 RESTful을 포함한 웹 애플리케이션을 빌드합니다 좀 더 자세한 사항은 본문을 참고해 주세요.

리소스 획득

7 자세한 내용은 본문을 참고 해주시기 바랍니다.

리소스 획득

사용자가 카카오 아이디로 로그인 버튼을 눌러 카카오 로그인을 시작하면, 클라이언트 애플리케이션은 Kakao 좀 더 자세한 사항은 본문을 참고해 주세요.