CS/웹개발
OAuth
hyunji1109
2025. 1. 6. 14:49
제3자 애플리케이션이 사용자의 자원에 접근할 수 있도록 허가하는 인증 표준 프로토콜이다.
사용자가 애플리케이션에 직접 비밀번호를 제공하지 않고 다른 서비스와 안전하게 데이터를 주고받을 수 있다.
장점
- 보안 강화
- 비밀번호를 공유하지 않아도 서비스 간 데이터 공유가 가능하다.
- 편리함
- 다양한 서비스가 하나의 계정을 통해 사용자 정보를 가져올 수 있다.
- 제한적 접근 허용
- 사용자는 특정 범위의 데이터 접근 권한만 허용할 수 있다.
단점
- 초기에 구현이 복잡하다.
- Refresh Token과 Access Token 관리가 필요하다.
- 권한을 잘못 설정하면 데이터 유출 가능성이 있다.
OAuth의 동작 방식
- 사용자(User)
- 서비스를 이용하려는 사용자
- 클라이언트(Client)
- 사용자가 이용하는 애플리케이션(예: 소셜 로그인)
- 리소스 소유자(Resource Owner)
- 사용자의 데이터가 저장된 서비스 제공자(예: 구글, 페이스북)
- 리소스 서버(Resource Server)
- 데이터를 저장하고 관리하는 서버
- 인증 서버(Authorization Server)
- 권한을 부여하는 서버
- Access Token(액세스 토큰)
- 제한된 시간 동안 특정 리소스에 접근할 수 있는 임시 인증 정보이다.
- 클라이언트가 리소스 서버에 요청을 보낼 때 사용된다.
- Refresh Token(리프레시 토큰)
- 액세스 토큰이 만료되었을 때, 새 액세스 토큰을 발급받을 수 있는 토큰이다.
① 사용자가 클라이언트 요청
- 사용자가 클라이언트 애플리케이션에 로그인하거나, 서비스를 요청한다.
② 클라이언트가 권한 요청
- 클라이언트는 인증 서버에 권한 승인 요청을 보낸다.
③ 사용자 승인
- 사용자는 인증 서버에서 클라이언트가 요청한 권한을 승인한다.
④ 인증 서버가 액세스 토큰 발급
- 인증 서버는 클라이언트에게 Access Token(접근 토큰)을 발급한다.
⑤ 클라이언트가 리소스 요청
- 클라이언트는 리소스 서버에 액세스 토큰을 전달해 자원을 요청한다.
⑥ 리소스 서버 응답
- 리소스 서버는 액세스 토큰을 검증한 뒤 요청된 데이터를 반환한다.
예시
구글 계정을 사용하여 다른 애플리케이션에 로그인한다.
페이스분 계정의 데이터를 다른 애플리케이션에 제공한다.
- 사용자가 애플리케이션에서 구글로 로그인 버튼을 클릭한다.
- 구글의 인증 서버로 리디렉션되어 사용자가 로그인하고 권한을 승인한다.
- 구글은 클라이언트 애플리케이션에 Access Token을 전달한다.
- 클라이언트는 이 토큰을 사용해 사용자 정보를 요청하고 로그인을 완료한다.