카카오 로그인은 OAuth 2.0 프로토콜 중 Authorization Code Grant 방식을 사용한다.
우선, OAuth 에 대해서 알아보자.
OAuth (Open Authorization)
인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트의 자신의 정보로 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 수단으로 사용되는,
접근 위임을 위한 개방형 표준이다. (위키백과)
외부 소셜 계정을 기반으로 간편히 회원가입 및 로그인을 할 때 사용하는 프로토콜
OAuth 동작 방식
Resource Server : Client가 제어하고자 하는 자원을 보유하고 있는 서버 (Google, Kakao 등)
Resource Owner : 자원의 소유자. 실제 유저
Client : Resource Server에 접속해서 정보를 가져오고자 하는 클라이언트 (웹 어플리케이션)
- Resource server에 Client 등록: Client ID / Client Secret / Authorized redirect URL 부여 받음
- Resource Owner가 Resource Server에게 Client의 접근을 승인
- Resource Owner는 Client의 웹 어플리케이션을 이용하다가, 소셜 로그인 버튼 클릭
- Resource Server에 접속하여 로그인
- Resource Server는 Query String으로 넘어온 파라미터들을 통해 Client 검사
- 파라미터로 전달된 Client ID와 동일한 ID가 있는지
- 해당 ID에 해당하는 Redirect URL이 파라미터로 전달된 Redirect URL과 같은지
- Resource Server는 Authorization Code를 발급해줌
- Client는 ID, Secret, Code를 Resource Server에 전달하여 Resource Server의 자원을 사용할 수 있는 Access Token을 발급받음
- Access Token을 헤더에 담아서 Resource Server의 자원을 사용하기 위한 API를 호출
- 해당 계정과 연동된 Resource Server의 자원 및 기능들을 Client에서 사용 가능
크게 보면 두 가지 (1. 인증 처리 2. 권한 부여)
카카오 로그인 요청 -> Code 받음 : 인증됨
Access Token을 받음 : 유저가 Client에 Kakao에 있는 본인 정보에 접근할 수 있는 권한을 위임했다는 뜻
인증/인가 구현 방식
1. Cookie
2. Session
3. Token
JWT (JSON Web Token)은 stateless 한 구조를 유지하면서도 다른 인증 방식에 비해 보안성이 떨어지지 않는 방식이다. 웹 서비스에서 자주 사용되는 Token으로, Header, Payload, Signature로 구성되어 있다.
Payload : 전송하고자 하는 데이터
References
'Backend' 카테고리의 다른 글
FastAPI 동작 구조, 비동기 매커니즘 (1) | 2024.06.15 |
---|---|
[Study] 보이저엑스 백엔드 개발자 기술 질문 (1) | 2024.05.29 |