OAuth2란 무엇인가?
OAuth2(Open Authorization 2.0)는 사용자의 비밀번호를 직접 공유하지 않고, 제3의 애플리케이션이 사용자의 리소스에 접근할 수 있도록 허용하는 인증/인가 프로토콜입니다.
대표적으로 소셜 로그인에서 많이 사용됩니다.
예시
- Google 로그인
- Kakao 로그인
- Naver 로그인
사용자가 회원가입 대신 "구글로 로그인" 같은 버튼을 누르는 방식이 바로 OAuth2 기반입니다.
OAuth2가 필요한 이유
과거에는 외부 서비스가 사용자 데이터를 사용하려면 아이디와 비밀번호를 직접 받아야하는 문제가 있었습니다.
문제점
- 보안 위험
- 비밀번호 유출 가능
- 권한 통제 어려움
OAuth2는 Access Token 기반 권한 위임 방식을 사용하여 이를 해결합니다.
OAuth2 주요 개념
1. Resource Owner
사용자
2. Client
사용자 리소스를 접근하려는 서비스 (예: 쇼핑몰 사이트)
3. Authorization Server
사용자 인증을 담당하는 서버(예: Google, Kakao)
4. Resource Server
사용자의 실제 데이터를 가지고 있는 서버(예: 구글 프로필 API)
OAuth2 동작 흐름
대표적인 Authorization Code 방식 기준
1. 사용자 -> Client : 로그인 요청
2. Client -> Authorization Server : 인증 요청
3. 사용자 -> Authorization Server : 로그인
4. Authorization Server -> Client : Authorization Code 전달
5. Client -> Authorization Server : Code로 Access Token 요청
6. Authorization Server -> Client : Access Token 발급
7. Client -> Resource Server : Access Token으로 API 요청
핵심 개념: Access Token
OAuth2에서는 Access Token을 이용하여 리소스 접근 권한을 부여합니다.
특징
- 일정 시간 후 만료
- 권한 범위(scope) 설정 가능
- 비밀번호 공유 불필요
예
Authorization: Bearer AccessToken
OAuth2 사용 예시(소셜 로그인)
사용자가 구글 로그인 버튼 클릭
사용자 -> 쇼핑몰 서비스 -> Google 로그인 페이지 -> Access Token 발급 -> Google 사용자 정보 조회
이 과정에서 사용자의 비밀번호는 쇼핑몰 서비스에 전달되지 않습니다.
OAuth2는 사용자의 비밀번호를 공유하지 않고 Access Token을 이용해 제3자 서비스에 권한을 위임하는 인증/인가 프로토콜입니다.