반응형
1. OAuth ?
Open standard for Authorization
의 약자로 인터넷 사용자들이 비밀번호를 제공하지 않고, 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근권한을 부여할 수 있는 공통적인 수단으로 사용되는, 접근 위임을 위한 개방형 표준이다. (위키백과)
OAuth가 사용되기 전에는 인증 방식의 표준이 없기 때문에 아이디와 비밀번호를 사용하여 보안에 취약한 구조이며, 기업마다 자체 인증 방식으로 개발하여 제각각의 코드로 개발되었다.
2. vs OAuth 1.0 ?
- 간단한 구현: 암호화된 시그니처를 생성하는 과정을 생략하여 간단한 구현 가능
- 다양한 인증 방식: HMAC 암호화 방식만 제공하던 OAuth 1.0과 달리 다양한 인증 방식 제공
- 높은 보안성: 토큰 기반 인증 방식 사용, SSL/TLS와 같은 보안 프로토콜 사용으로 보안성 향상
- 애플리케이션 리소스 서버와 인증 서버(IdP)의 분리
3. OAuth 2.0 용어
OAuth 2.0 RFC 문서에서 정의하는 역할
- Resource Owner: 사용자
- User Agent: Resource Owner가 인증 서버와 통신하는 데 사용하는 브라우저 또는 모바일 애플리케이션
- Client: 리소스 서버에서 사용자의 리소스에 액세스하려는 애플리케이션
- Resource Server: 리소스를 요청할 API 서버
- Authorization Server: 인증 서버(IdP)
4. 인증 방식 종류
1) Authorization Code Grant
/authorize?response_type=code&...
/token?grant_type=authorization_code&...
- 인가 서버를 통해 액세스 토큰을 발급받아 인증 정보를 직접 다루지 않는다. (보안)
- 클라이언트는 인증을 위해 인가 서버에 요청한다.
- 인가 서버는 사용자 인증을 요청한다. (인증 페이지 제공)
- 사용자가 인증을 허용하면 인가 서버는 인증 코드(authorization_code)를 발급한다.
- 클라이언트는 이 코드를 사용하여 액세스 토큰을 요청한다.
2) Implicit Grant
response_type=token
- 액세스 토큰을 바로 반환하기 때문에 보안상의 취약점이 존재한다. 해당 방식은 클라이언트 애플리케이션이 공개적인 정보를 다루는 경우에 적합하다.
- 클라이언트는 인증을 위해 인가 서버에 요청한다.
- 인가 서버는 사용자 인증을 요청한다. (인증 페이지 제공)
- 액세스 토큰을 발급하여 지정된 URI로 리디렉션한다.
(액세스 토큰 포함으로 웹에서의 보안적인 문제) - 클라이언트는 이 토큰을 사용하여 리소스 서버(API)에 접근한다.
3) Password Credentials Grant
grant_type=password
- 사용자의 인증 정보를 직접 클라이언트에게 제공하고, 클라이언트는 이를 사용하여 액세스 토큰을 요청한다. 이 방식은 보안성이 낮아 다른 방식 사용을 권장
4) Client Credentails Grant
grant_type=client_credencials
- 클라이언트의 인증 정보를 사용하여 액세스 토큰을 요청한다. 사용자 정보가 필요하지 않으므로, 클라이언트 자체의 리소스에 대한 접근 제어에 사용된다. 사용자에 대한 접근 제어는 제공하지 않는다.
COUPANG
쿠팡은 로켓배송
www.coupang.com
이 포스팅은 쿠팡 파트너스의 활동의 일환으로, 일정한 금액의 수수료를 받게됩니다.
반응형
'웹 개발 > 웹 아키텍처' 카테고리의 다른 글
OAuth 2.0 PKCE 확장 (2) | 2024.02.02 |
---|---|
[Nginx] 정적 파일 제공 (2) | 2024.01.24 |
[AWS] EC2 인스턴스 유형 변경 검토 (2) | 2024.01.23 |
[DB] AWS RDS 마이그레이션 검토 (0) | 2024.01.23 |
[Docker] 다중 컨테이너 앱 환경 구축 (0) | 2024.01.22 |