Python의 GIL(Global Interpreter Lock)과 멀티스레딩의 한계

OAuth 2.0은 인터넷 애플리케이션에서 인증 및 권한 부여를 처리하는 표준 프로토콜로, 사용자가 자신의 자격 증명을 제3자 애플리케이션과 공유하지 않고도 리소스에 안전하게 접근할 수 있게 합니다. OpenID Connect는 OAuth 2.0을 기반으로 사용자 인증(Authentication)을 위한 프로토콜입니다. 이 글에서는 OAuth 2.0의 주요 인증 플로우를 설명하고, OpenID Connect와의 차이점을 살펴보겠습니다.
OAuth 2.0은 권한 부여 프레임워크로, 사용자와 자원의 소유자가 클라이언트 애플리케이션에 제한된 접근 권한을 부여할 수 있도록 합니다. OAuth 2.0은 인증(Authentication)보다는 권한 부여(Authorization)에 초점을 맞추고 있으며, 사용자의 자격 증명을 직접 노출하지 않고도 애플리케이션이 리소스 서버에 안전하게 접근할 수 있게 합니다.
주요 용어:
OAuth 2.0은 다양한 시나리오에 맞게 여러 가지 인증 플로우(Authorization Grant)를 제공합니다. 주요 플로우는 다음과 같습니다:
흐름: 가장 일반적으로 사용되는 플로우로, 주로 서버사이드 애플리케이션에서 사용됩니다. 클라이언트는 리소스 소유자(사용자)로부터 권한 부여 코드를 받아, 이를 통해 접근 토큰을 얻습니다.
과정:
사용자 -> 권한 부여 서버: 권한 부여 코드 요청
권한 부여 서버 -> 사용자: 권한 부여 코드 발급
클라이언트 -> 권한 부여 서버: 접근 토큰 요청
권한 부여 서버 -> 클라이언트: 접근 토큰 발급
클라이언트 -> 리소스 서버: 접근 토큰으로 리소스 요청
흐름: 주로 자바스크립트 기반의 클라이언트 애플리케이션에서 사용됩니다. 접근 토큰이 직접 발급되며, 권한 부여 코드 단계가 생략됩니다.
과정:
사용자 -> 권한 부여 서버: 접근 토큰 요청
권한 부여 서버 -> 클라이언트: 접근 토큰 발급
클라이언트 -> 리소스 서버: 접근 토큰으로 리소스 요청
흐름: 사용자가 클라이언트에게 자신의 사용자 이름과 비밀번호를 제공하는 방식입니다. 주로 신뢰할 수 있는 애플리케이션에서 사용되며, 보안상의 이유로 권장되지 않습니다.
과정:
사용자 -> 클라이언트: 사용자 이름과 비밀번호 제공
클라이언트 -> 권한 부여 서버: 접근 토큰 요청
권한 부여 서버 -> 클라이언트: 접근 토큰 발급
클라이언트 -> 리소스 서버: 접근 토큰으로 리소스 요청
흐름: 애플리케이션 자체가 인증을 받아야 하는 서버 간 통신에서 사용됩니다. 사용자가 관여하지 않고, 클라이언트 자격 증명을 통해 접근 토큰이 발급됩니다.
과정:
클라이언트 -> 권한 부여 서버: 접근 토큰 요청
권한 부여 서버 -> 클라이언트: 접근 토큰 발급
클라이언트 -> 리소스 서버: 접근 토큰으로 리소스 요청
OpenID Connect는 OAuth 2.0을 기반으로 사용자 인증을 위한 프로토콜입니다. OAuth 2.0이 주로 권한 부여에 집중하는 반면, OpenID Connect는 사용자 인증을 다루며, OAuth 2.0의 위에 사용자 인증 계층을 추가한 것입니다.
주요 특징:
OpenID Connect의 인증 흐름:
OpenID Connect의 인증 흐름은 OAuth 2.0의 권한 부여 코드 그랜트 플로우와 유사하지만, 추가로 ID 토큰이 발급됩니다.
사용자 -> 권한 부여 서버: 권한 부여 코드 요청 (OpenID Scope 포함)
권한 부여 서버 -> 사용자: 권한 부여 코드 발급
클라이언트 -> 권한 부여 서버: 접근 토큰 및 ID 토큰 요청
권한 부여 서버 -> 클라이언트: 접근 토큰 및 ID 토큰 발급
클라이언트 -> 리소스 서버: 접근 토큰으로 리소스 요청
OAuth 2.0과 OpenID Connect는 현대 웹 애플리케이션에서 인증 및 권한 부여를 처리하는 중요한 프로토콜입니다. OAuth 2.0은 주로 권한 부여를 다루며, 제3자 애플리케이션이 리소스에 안전하게 접근할 수 있도록 합니다. 반면, OpenID Connect는 OAuth 2.0을 기반으로 사용자 인증을 처리하며, ID 토큰을 통해 인증된 사용자 정보를 제공합니다.
OAuth 2.0과 OpenID Connect를 올바르게 이해하고 활용하면, 애플리케이션의 보안과 사용자 경험을 크게 개선할 수 있습니다. 이를 통해 사용자가 안전하게 리소스에 접근하고, 제3자 애플리케이션에 자신의 자격 증명을 노출하지 않으면서도 다양한 서비스를 사용할 수 있게 됩니다.