OAuth는 오픈 스탠다드 인증 프로토콜로, 사용자가 서드파티 애플리케이션에게 자신의 웹 서비스의 리소스에 대한 접근 권한을 제공할 수 있게 해줍니다. OAuth를 사용하면 사용자는 자신의 로그인 정보를 제3의 애플리케이션과 공유하지 않고도, 그 애플리케이션에게 특정 정보에 접근하거나 특정 기능을 실행할 권한을 부여할 수 있습니다.
OAuth의 핵심 개념
- 리소스 소유자(Resource Owner): 보통 최종 사용자로, 보호되는 리소스에 대한 접근 권한을 부여할 수 있는 역할입니다.
- 리소스 서버(Resource Server): 사용자의 정보를 보유하고 있는 서버로, 보호된 리소스를 호스팅합니다. 리소스 서버는 액세스 토큰을 통해 보호된 리소스에 대한 접근을 제어합니다.
- 클라이언트(Client): 사용자 대신 리소스에 접근을 요청하는 어플리케이션(예: 웹사이트, 모바일 앱)입니다.
- 인증 서버(Authorization Server): 클라이언트에게 액세스 토큰을 발급하는 서버로, 사용자의 승인을 받아 이를 처리합니다.
OAuth 작동 방식
- 사용자 인증: 사용자가 클라이언트 애플리케이션을 통해 서비스에 로그인합니다.
- 권한 요청: 클라이언트 애플리케이션은 리소스 소유자의 승인을 요청합니다. 사용자는 특정 리소스에 대한 접근 권한을 클라이언트에게 부여할 수 있습니다.
- 권한 부여: 사용자가 클라이언트에게 접근 권한을 부여하면, 인증 서버는 클라이언트에게 권한 부여 코드를 제공합니다.
- 액세스 토큰 요청: 클라이언트는 받은 권한 부여 코드를 인증 서버에 제시하여 액세스 토큰을 요청합니다.
- 액세스 토큰 발급 및 사용: 인증 서버는 클라이언트의 요청을 검증한 후, 액세스 토큰을 발급합니다. 클라이언트는 이 토큰을 사용하여 리소스 서버에 접근합니다.
- 리소스 접근: 리소스 서버는 액세스 토큰을 검증한 후, 요청된 리소스에 대한 접근을 허용합니다.
OAuth 버전
- OAuth 1.0: 초기 버전으로, 복잡한 서명 과정을 포함하여 보안을 강화하였으나, 구현의 복잡성으로 인해 널리 사용되지 않았습니다.
- OAuth 2.0: OAuth 1.0의 단점을 개선하고 확장성과 유연성을 높인 버전입니다. 현재 가장 널리 사용되는 버전으로, 다양한 인증 플로우를 지원하여 다양한 시나리오에 적용 가능합니다.
OAuth는 인증 및 권한 부여 프로세스를 표준화함으로써, 사용자 데이터의 보안을 강화하고, 개발자가 안전하게 서비스를 제공할 수 있는 방법을 제시합니다.
1.0 vs 2.0
OAuth 1.0과 OAuth 2.0은 인증 및 권한 부여를 위한 두 가지 주요 버전의 OAuth 프로토콜입니다. 두 버전 사이에는 여러 중요한 차이점이 있으며, 이는 보안, 구현의 용이성, 사용 사례의 유연성 등 여러 면에서 나타납니다.
OAuth 1.0의 특징
- 서명 방식을 사용한 보안: OAuth 1.0은 HTTP 요청에 대한 서명을 생성하여 데이터 무결성과 메시지 인증을 보장합니다. 이 서명 과정은 토큰과 비밀을 사용하여 수행되며, 중간자 공격을 방지하는 데 도움이 됩니다.
- 비밀키 필요: OAuth 1.0에서는 소비자 비밀(consumer secret)과 토큰 비밀(token secret)이 모두 필요합니다. 이러한 비밀키는 인증 과정에서 서명을 생성하는 데 사용됩니다.
- 통신 프로토콜 제한: OAuth 1.0은 보안을 위해 HTTPS를 필수로 요구하지 않지만, 서명 메커니즘이 보안을 제공합니다. 그러나 이는 구현을 복잡하게 만들 수 있습니다.
OAuth 2.0의 특징
- 보안 메커니즘의 유연성: OAuth 2.0은 SSL/TLS(HTTPS)를 통한 보안 통신을 권장합니다. 특정 서명 메커니즘을 요구하지 않으며, 보안은 주로 전송 계층에서 처리됩니다.
- 다양한 인증 플로우 지원: OAuth 2.0은 여러 인증 플로우(예: 권한 부여 코드 플로우, 암시적 플로우, 리소스 소유자 비밀번호 자격증명 플로우, 클라이언트 자격증명 플로우)를 지원하여 다양한 시나리오와 애플리케이션 유형에 맞게 선택할 수 있게 합니다.
- 구현의 용이성: OAuth 2.0은 OAuth 1.0에 비해 구현이 더 단순하고 유연합니다. 이는 개발자가 OAuth를 더 쉽게 적용할 수 있게 하며, 다양한 환경과 애플리케이션에 맞게 조정할 수 있습니다.
- 확장성: OAuth 2.0은 확장 가능한 프레임워크를 제공합니다. 새로운 인증 방식이나 플로우를 OAuth 프로토콜에 통합할 수 있도록 설계되었습니다.
OAuth 1.0과 2.0의 주요 차이점 요약
- 보안 메커니즘: OAuth 1.0은 서명을 통한 보안 메커니즘을 사용하는 반면, OAuth 2.0은 HTTPS를 통한 보안을 권장합니다.
- 구현 복잡성: OAuth 1.0은 서명 과정으로 인해 구현이 더 복잡한 반면, OAuth 2.0은 구현이 더 간단하고 유연합니다.
- 인증 플로우의 다양성: OAuth 2.0은 다양한 인증 플로우를 제공하여, 더 넓은 범위의 애플리케이션과 사용 사례를 지원합니다.
- 확장성: OAuth 2.0은 보다 확장 가능한 프레임워크를 제공하여, 새로운 인증 방식이나 플로우를 쉽게 추가할 수 있습니다.
OAuth 2.0은 이러한 차이점들로 인해 널리 채택되고 있으며, 현대 웹 및 모바일 애플리케이션에서 사용자 인증과 권한 부여의 표준 방식으로 자리잡았습니다.
'여러가지 > 이것저것' 카테고리의 다른 글
SQL Injection (0) | 2024.03.21 |
---|---|
OAuth와 JWT 차이 (1) | 2024.03.21 |
JWT란 (0) | 2024.03.21 |
단방향 암호화 (0) | 2024.03.21 |
비대칭키, 대칭키 암호화 (0) | 2024.03.21 |