2024-08-02 MSA (Microservices Architecture) - 8

목표
- OAuth2와 JWT에 대해 이해한다.
OAuth2 (The OAuth 2.0 Authorization Framework)
- RFC 6749에서 정의된 토큰 기반의 인증 및 권한 부여 프로토콜이다.
OAuth2 Roles
1. Resource Owner (자원 소유자)
- 자신이 소유하고 있는 리소스 (예: 계정 정보, 사진, 데이터 등)에 접근할 권리가 있는 사용자이다.
2. Resource Server (보호 자원 서버)
- 보호된 리소스를 호스팅하는 서버이다.
- 클라이언트는 Authorization Server로부터 받은 Access Token을 사용하여 이 서버에 요청을 보낸다.
3. Authorization Server (인가 서버)
- 사용자의 동의 (Consent)를 위해 상호작용하는 서버이다.
- 클라이언트가 보낸 권한 부여 요청을 인가 서버에서 승인하면 클라이언트에게 Access Token을 발급한다.
4. Client (클라이언트)
- Resource Owner를 대신하여 Authorization Server에 접근하려는 애플리케이션이다.
- 자원 소유자의 허가를 받아야 작동할 수 있다.
JWT (JSON Web Token)
- 두 시스템 간에 정보를 안전하게 전송하기 위해 사용되는 JSON 형식의 토큰이다.
- 자가에 모든 정보를 포함하고 있어 Stateless 통신에 적합하다.
JWT의 구성 요소
- 타입 (typ): 토큰의 타입으로, 보통 JWT로 설정된다.
- 알고리즘 (alg): 서명을 해시하는 데 사용된 알고리즘으로, 일반적으로 HS256이나 RS256을 사용한다.
2. Payload (페이로드)
- 토큰에 담을 실제 데이터인 Claim을 포함한다.
- 클레임은 사용자 정보, 토큰의 발행 시간, 만료 시간 등과 같은 데이터를 포함할 수 있다.
3. Signature (서명)
- JWT의 무결성을 보장하기 위해 사용된다.