OAuth2의 기본 개념
OAuth2는 인터넷 사용자가 비밀번호를 제공하지 않고도 다른 웹사이트의 자원에 대한 접근 권한을 제 3자 애플리케이션에 부여할 수 있는 개방형 표준입니다. 이 프로토콜은 특히 "인증(Authorization)"에 초점을 맞추고 있습니다.
- Resource Owner(리소스 소유자): 일반적으로 서비스를 사용하는 사용자
- Client(클라이언트): 사용자 대신 특정 API 액세스 권한을 요청하는 애플리케이션
- Resource Server(리소스 서버): 사용자 데이터를 보유하고 있는 서버
- Authorization Server(인증 서버): 클라이언트가 사용자를 대신해 리소스에 접근할 수 있도록 토큰을 발급하는 서버
OAuth 장점
개발자 관점
1. 보안 강화: OAuth를 사용하면 개발자는 사용자의 비밀번호 같은 민감한 정보를 직접 다루지 않아도 됩니다. 대신, 인증을 통해 서비스를 보호할 수 있습니다. 이는 보안 위험을 크게 줄이고, 데이터 유출 시 피해를 최소화 할 수 있습니다.
2. 서드 파티 인증
OAuth를 통해 개발자들은 Google, FaceBook, Naver와 같이 검증된 인증 시스템을 이용할 수 있습니다. 이를 통해 자체 적으로 복잡한 인증 시스템을 구축할 필요 없이, 신뢰할 수 있는 인증 방법을 쉽게 통합할 수 있습니다.
3. 접근권한관리
OAuth는 자신의 데이터에 대해 제 3자 애플리케이션에 특정한 접근 권한만을 부여할 수 있도록 합니다. 예를 들어, 앱이 사용자의 이름과 이메일 주소는 접근할 수 있지만, 다른 민감한 데이터에는 접근할 수 없게 제한할 수 있습니다.
4. 유지보수와 확장성
표준화된 OAuth 프로토콜을 사용함으로써 개발자는 보다 일관된 접근 방식으로 인증 시스템을 구축하고 유지보수할 수 있습니다. 또한, 새로운 인증 제공자나 보안 기능을 쉽게 추가할 수 있습니다.
사용자 관점
1. 사용 편의성
사용자는 여러 서비스에 동일한 인증 제공자를 사용하여 로그인할 수 있습니다. 이는 복잡한 비밀번호를 여러 개 기억할 필요 없이, 서비스 이용이 보다 편리해진다는 것을 의미합니다.
2. 개인정보 보호
사용자는 자신의 계정 정보를 직접 공유하지 않고도 서비스를 이용할 수 있습니다. OAuth를 통해 사용자는 자신이 원하는 정보만을 선택적으로 제3자에게 제공할 수 있습니다.
3. 신뢰성 향상
대형 인증 제공자들은 보통 높은 수준의 보안을 제공합니다. 사용자는 이러한 신뢰할 수 있는 제공자를 통해 다른 서비스를 이용할 때 보안에 대해 더욱 안심할 수 있습니다.
4. 권환 취소 용이성
사용자는 언제는디 제3자 애플리케이션이 자신의 데이터에 접근하는 것을 차단할 수 있습니다. 인증 제공자의 인터페이스를 통해 쉽게 접근 권한을 관리하고 취소할 수 있습니다.
OAuth2의 주요흐름
- Authorization Code Grant
- 가장 일반적인 유형으로, 클라이언트가 서버러부터 인증 코드를 받아 토큰을 요청합니다. 웹 서버 애플리케이션에 적합합니다.
- 흐름
1) 사용자 인증 요청: 사용자가 클라이언트 애플리케이션을 통해 로그인을 시도하면, 클라이언트는 사용자를 인증 서버의 로그인 페이지로 리디렉션 합니다.
2) 인증 및 권한 부여: 사용자가 인증 서버에서 로그인을 하고, 클라이언트에 특정 자원에 대한 접근 권한을 부여합니다.
3) 인증 코드 수신: 인증이 성공하면, 인증 서버는 클라이언트에 인증 코드를 리디렉션을 통해 제공합니다.
4) 액세스 토큰 요청: 클라이언트는 받은 인증 코드를 사용하여 인증 서버에 액세스 토큰을 요청합니다.
5) 엑세스 토큰 발급: 인증 서버는 클라이언트의 요청을 검증한 후 액세스 토큰을 발급합니다.
- Implict Grant
이전에는 주로 클라이언트 사이드 애플리케이션(SPA)에 사용되었지만, 보안상의 취약점으로 인해 현재는 권장되지 않습니다. 액세스 토큰이 바로 클라이언트에 전달 됩니다.
- 흐름
1) 사용자 인증 요청: 클라이언트가 인증 서버의 로그인 페이지로 사용자를 리디렉션합니다.
2) 인증 및 액세스 토큰 발급: 사용자가 로그인하고 권한을 부여하면, 인증 서버는 바로 액세스 토큰을 URL을 통해 클라이언트 리디렉션합니다.
- Resource Owner Password Credentials Grant
사용자의 로그인 정보(아이디, 비밀번호)를 직접 사용하여 액세스 토큰을 받습니다. 신뢰할 수 있는 애플리케이션에만 사용됩니다.
1) 액세스 토큰 요청: 사용자는 클라이언트에 자신의 사용자 이름과 비밀번호를 제공합니다.
2) 액세스 토큰 발급: 클라이언트는 이 자격증명을 사용하여 직접 인증 서버에 액세스 토큰을 요청하고, 인증 서버 검 증 후 토큰을 발급합니다.
- Client Credentials Grant
클라이언트가 자신의 자격증명을 사용해 액세스 토큰을 얻는 방식으로, 주로 클라이언트가 사용자를 대신하여 작업을 수행할 때 사용됩니다.
1) 액세스 토큰 요청: 클라이언트는 자신의 자격증명(클라이언트 ID와 시크릿)을 사용하여 인증 서버에 액세스 토큰을 요청합니다.
2) 엑세스 토큰 발급: 인증 서버는 클라이언트의 자격증명을 검증하고 액세스 토큰을 발급합니다.
'IT' 카테고리의 다른 글
Windows 포트 개방으로 인한 보안 문제 해결 (0) | 2025.01.08 |
---|---|
Windows, python 가상환경에 환경변수 생성했는데 모듈을 찾지 못할 때 (0) | 2024.10.31 |
MQTT Python Client -paho (0) | 2024.04.12 |
Python, api로 xml데이터 가져와 json으로 변경 (0) | 2024.04.12 |
SSH 왜 필요한가? (0) | 2024.04.12 |