OAuth는 애플리케이션이 사용자 자격 증명을 노출하지 않고도 다른 애플리케이션이나 서비스의 리소스에 접근할 수 있는 권한을 부혀할 수 있는 권한 부여 프레임워크이다. 이런 매커니즘은 구글, 페이스북, 트위터 등 대형 플랫폼에서 사용하고 있으며 타사 애플리케이션 및 웹 사이트의 계정에 대한 정보를 공유할 수 있도록 허용해준다.
ㅇ 구성 요소
- 리소스 소유자
리소스의 소유자이며 권한을 위임할 수 있는 사용자
ex : 소셜 로그인을 사용하려는 사용자 (나) - 클라이언트
리소스 소유자의 데이터를 사용하려는 애플리케이션
클라이언트는 리소스 소유자의 허락을 받아 리소스 서버에 접근한다
반드시 인증을 통해 권한을 받아야한다
ex : 소셜 로그인을 통해 가입하려는 웹사이트 - 리소스 서버
보호된 리소스를 저장하고 관리하는 서버
클라이언트는 리소스 서버에 접근하려면 권한이 있어야 한다
ex : 구글이 관리하는 사용자 데이터 등이 저장된 서버 - 권한 서버
사용자를 인증하고 클라이언트가 사용할 액세스 토큰을 발급하는 역할을 수행
권한 서버와 리소스 서버는 동일하거나 분리될 수 있다
ex : 구글이 관리하고 있는 사용자 인증, 토큰 발급 서 - 액세스 토큰
클라이언트가 리소스 서버에 접근할 수 있도록 권한 서버에서 발급하는 인증 토큰
보통 제한된 시간 동안 유효하며, 사용 범위도 명시된다
형식은 JWT 또는 일반 문자열 - 리프레시 토큰
액세스 토큰이 만료되었을 때 새 엑세스 토큰을 발급받을 수 있는 토큰
주로 장기적인 세션 유지가 필요할 때 사용
ㅇ 동작 원리
- 클라이언트 권한 요청
사용자가 클라이언트를 통해 권한을 요청하면 클라이언트는 권한 서버로 권한 요청을 보낸다
사용자는 이 과정에서 권한 부여 동의를 제공 - 사용자 인증 및 승인
권한 서버는 사용자를 인증(로그인)하고 사용자가 요청한 권한 범위를 검토한 후 승인한다 - 액세스 토큰 발급
권한 서버는 클라이언트에게 엑세스 토큰을 발급한다 이 토큰은 클라이언트가 리소스 서버에 접근할 때 사용한다 - 리소스 요청
클라이언트는 액세스 토큰을 포함해 리소스 서버에 요청을 보낸다 - 리소스 제공
리소스 서버는 액세스 토큰의 유효성을 확인한 뒤 요청된 리소스를 반환한다
ㅇ 권한 부여 방식
- 인가 코드 방식
- 암시적 방식
- 자격 증명 방식
- 클라이언트 자격 증명 방식
- 디바이스 코드 방식
'Web' 카테고리의 다른 글
[Web] Authentication & Authorization (0) | 2024.11.28 |
---|---|
[Web] JWT(Json Web Tokken) (0) | 2024.11.28 |
[Web] Web과 WAS의 차이 (0) | 2024.11.27 |
[Web] REST API (1) | 2024.11.27 |
[Web] HTTP Status Code (0) | 2024.11.27 |