반응형
OAuth 2.0
사용자의 인증과 권한 부여를 처리하기 위한 표준 프로토콘
- 사용자가 자신의 자격 증명을 공유하지 않고도, 타사 애플리케이션이 사용자의 리소스(예: 이메일, 프로필 정보)에 접근할 수 있도록 권한을 부여
- 주로 SNS 로그인이나 API 접근 제어와 같은 환경에서 사용됨
- HTTP 프로토콜을 기반으로 작동하여, 보안, 유연성, 확장성을 제공
OAuth 2.0의 구성 요소
Resource Owner (리소스 소유자)
- 사용자를 의미
- 자신의 데이터를 제공할 권리를 가지고 있으며, 타사 앱이 데이터에 접근하도록 허용
Client (클라이언트)
- 리스소에 접근하려는 애플리케이션
- 예: 타사 애플리케이션(카카오나 네이버, 구글 로그인을 사용하는 앱)
Resource Server (리소스 서버)
- 리소스 소유자의 데이터를 저장하고 관리하는 서버
- 예: Kakao API 서버, NAVER API 서버, Google API 서버
Authorization Server (인가 서버)
- 클라이언트가 데이터를 요청할 수 있는 권한을 부여하고 Access Token(엑세스 토큰)을 발급하는 서버
Access Token
- 리소스 서버에 특정 데이터에 접근할 수 있는 권한을 나타내는 토큰
- 클라이언트는 이 토큰을 사용해 데이터를 요청
OAuth 2.0의 흐름 과정
- 권한 요청 (Authorization Request)
- 클라이언트가 리소스 소유자에게 권한 요청
- 사용자는 동의를 통해 요청을 수락하거나 거부할 수 있음
- 인가 코드 발급 (Authorization Code Grant)
- 리소스 소유자가 권한을 허가하면, Authorization Server는 클라이언트에 인가 코드를 발급
- 이 코드는 클라이언트가 엑세스 토큰을 요청할 때 사용 됨
- 엑세스 토큰 요청 (Access Token Request)
- 클라이언트는 인가 코드를 사용해 Authorization Server에 Access Token을 요청
- 요청 시, 클라이언트의 인증 정보(Client ID, Client Secret)도 함께 제공됨
- 엑세스 토큰 발급 (Access Token Response)
- Authorizaiton Server는 요청을 검증한 뒤, 클라이언트에게 Access Token을 발급
- 리소스 요청 (Resource Request)
- 클라이언트는 Access Token을 사용해 Resource Server에서 리소스를 요청
- 리소스 제공 (Resource Response)
- Resource Server는 Access Token이 유효한지 확인 후, 요청된 리소스를 클라이언트에 제공
인가 코드 (Authorization Code)
OAuth 2.0에서 클라이언트가 Access Token을 얻기 위해 사용하는 임시 코드
특징
- 사용자 인증 및 동의 후에 Authorization Server가 클라이언트에 발급
- 클라이언트는 인가 코드를 사용하여 Access Token을 요청
- 보안 가오하를 위해, 인가 코드는 짧은 수명을 가지며, 한 번 사용하면 폐기됨
목적
- 사용자의 민감한 인증 정보를 클라이언트와 직접 공유하지 않고, 안전한 인증 과정을 보장하기 위함
OAuth 2.0의 주요 흐름 그림
- 사용자가 클라이언트 애플리케이션에서 권한 요청을 승인함
- 클라이언트는 Authorization Server에서 인가 코드를 받고, 이를 사용해 엑세스 토큰을 요청
- Access Token을 통해 Resource Server에 요청을 보내 데이터를 받아옴
이 과정을 통해 보안성과 유연성을 동시에 보장할 수 있다!
반응형
'BE > Node.js & Express' 카테고리의 다른 글
Cookie, Session, Token (0) | 2024.11.19 |
---|---|
네트워크 | CORS와 SOP (0) | 2024.11.13 |
네트워크 | HTTP와 HTTPS, 보안 메커니즘 (0) | 2024.11.13 |
네트워크 | 네트워크 기본 구조와 개념 (0) | 2024.11.13 |