본문 바로가기

iOS/STUDY

[iOS] 카카오 로그인 이해하기

로그인.. 간단해보이지만 이해하기 어려운 부분이 아닐까..ㅠㅠ

 

프로젝트에서 간편 로그인 기능을 사용하기로 했기 때문에

간편 로그인 기능도 OAuth2 프로토콜 기반의 사용자 인증 기능이라 공부해보려고 합니다.


OAuth 2.0 주요 용어

Authentication

인증, 접근 자격이 있는지 검증하는 단계입니다.

Authorization

인가, 자원에 접근할 권한을 부여하는 것입니다. 인가가 완료되면 리소스 접근 권한이 담긴 Access Token이 클라이언트에게 부여됩니다.

Access Token

리소스 서버에게서 리소스 소유자의 보호된 자원을 획득할 때 사용되는 만료 기간이 있는 Token 입니다.

Refresh Token

Access Token 만료시 이를 갱신하기 위한 용도로 사용하는 Token 입니다. Refresh Token은 일반적으로 Access Token보다 만료 기간이 깁니다.

 

 

Roles

OAuth 2.0 프로토콜을 구성하는 4가지의 역할

Resource owner

리소스 소유자 또는 사용자. 보호된 자원에 접근할 수 있는 자격을 부여해 주는 주체. OAuth2 프로토콜 흐름에서 클라이언트를 인증(Authorize)하는 역할을 수행합니다. 인증이 완료되면 권한 획득 자격(Authorization Grant)을 클라이언트에게 부여합니다. 개념적으로는 리소스 소유자가 자격을 부여하는 것이지만 일반적으로 권한 서버가 리소스 소유자와 클라이언트 사이에서 중개 역할을 수행하게 됩니다.

Client

보호된 자원을 사용하려고 접근 요청을 하는 애플리케이션 입니다.

Resource Server

사용자의 보호된 자원을 호스팅하는 서버입니다.

Authorization Server

권한 서버입니다. 인증 / 인가를 수행하는 서버로 클라이언트의 접근 자격을 확인하고 Access Token을 발급하여 권한을 부여하는 역할을 수행합니다.

 


 

OAuth 2.0 프로토콜에서는 다양한 클라이언트 환경에 적합하도록 권한 부여 방식에 따른 프로토콜을 4가지 종류로 구분하여 제공하고 있습니다.

 

이중에서 저는 간편로그인에 사용되는 방식을 알아보겠습니다.

 

Authorization Code Grant

권한 부여 승인 코드 방식

 

권한 부여 승인을 위해 자체 생성한 Authorization Code를 전달하는 방식입니다. 간편로그인 기능에서 사용되는 방식으로 클라이언트가 사용자를 대신하여 특정 자원에 접근을 요청할 때 사용되는 방식입니다. 보통 타사의 클라이언트에게 보호된 자원을 제공하기 위한 인증에 사용되고, Refresh Token을 사용할 수 있습니다.

권한 부여 승인을 요청하면 클라이언트는 권한 서버에서 제공하는 로그인 페이지를 띄워줍니다.

이 페이지를 통해 사용자가 로그인을 하면 권한 서버는 Access Token (Authorization Code)을 클라이언트에게 다시 전달해줍니다.

이 Access Token을 사용하여 자원을 요청합니다.


iOS 카카오 로그인

구현 방식

사용자의 카카오 계정을 인증하는 방식에 따라 구현 방법이 두가지로 나뉘는데,

프로젝트에서는 카카오가 권장하는 카카오톡으로 로그인을 사용해보도록 하겠습니다.

 

카카오톡으로 로그인은 카카오톡에 연결된 카카오 계정 및 인증 정보를 사용하여

사용자가 카카오 계정 정보를 직접 입력하지 않아도 간편하게 로그인이 가능합니다.

동작 방식은 위에서 보았던 OAuth 2.0 동작 방식과 같다는 것을 알 수 있었습니다.

 

소셜로그인을 어떻게 유지할지 문서를 읽으면서 생각해봤는데 리프레시 토큰은 2달 유지가 되니까

리프레스 토큰으로 로그인유지하다가, 리프레스 토큰 생성 한달 후에 유저가 앱에 들어오면 리프레스 토큰을 갱신 시켜주는게 맞는 방법인지는 모르겠지만.. 일단 이렇게 구현해 보는 것으로..!

 

 

 

 

참고

https://blog.naver.com/mds_datasecurity/222182943542

 

OAuth 2.0 동작 방식의 이해

OAuth 2.0(Open Authorization 2.0, OAuth2)은 인증을 위한 개방형 표준 프로토콜입니다. 이 프로토...

blog.naver.com

https://developers.kakao.com/docs/latest/ko/kakaologin/ios

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

https://sujinnaljin.medium.com/ios-%EC%B9%B4%EC%B9%B4%EC%98%A4%ED%86%A1-%EC%86%8C%EC%85%9C-%EB%A1%9C%EA%B7%B8%EC%9D%B8-58a525e6f219

 

[iOS] 카카오톡 소셜 로그인 연동

Cocoapod으로 간단하게 iOS SDK v2를 이용해보자 (업데이트 완료!🌝)

sujinnaljin.medium.com