🛑 Web API 보안이란?
애플리케이션 프로그래밍 인터페이스(Application Programming Interface, API)는 한 소프트웨어가 다른 소프트웨어와 상호 작용하는 방법입니다
API 보안은 공격으로부터 API를 보호하는 프로세스입니다 애플리케이션, 네트워크 및 서버가 공격을 받을 수 있는 것처러 API도 다양한 위협의 희생양이 될 수 있습니다
API 보안은 웹 애플리케이션 보안의 핵심 구성요소입니다 대부분의 최신 웹 애플리케이션은 작동하기 위해 API에 의존하며 API는 외부 당사자가 애플리케이션에 액세스할 수 있도록 허용함으로써 애플리케이션에 추가적인 위험을 초래합니다
♻️ 인증 방식의 종류
HTTP Basic Authentication
- 기본
- HTTP 트랜잭션의 맥락에서 기본 액세스 인증(Basic Authentication)은 HTTP 사용자 에이전트(예: 웹 브라우저)가 요청 시 사용자 이름과 암호를 제공하는 방법입니다
- 특징
- HTTP 기본 인증 구현은 쿠키, 세션 식별자 또는 로그인 페이지가 필요하지 않기 때문에 웹 리로스에 대한 액세스 제어를 시행하는 가장 간단한 기술입니다
- 사용
- 기본 HTTP 인증에서 요청에 헤더필드가 포함됩니다
Authorization: Basic <credentials>
여기서 Authorization은 단일 콜론으로 결합된 ID 및 Password의 Base64의 인코딩입니다
- 기본
- "Open Authorization"을 의미하는 OAuth 2.0은 웹사이트 또는 애플리케이션이 사용자를 대신하여 다른 웹/앱에서 호스팅하는 리소스에 액세스할 수 있도록 설계된 표준입니다
- 원칙
- OAuth 2.0은 액세스 토큰을 사용합니다 액세스 토큰 은 최종 사용자를 대신하여 리소스에 액세스할 수 있는 권한을 나타내는 데이터 조각입니다 OAuth 2.0은 액세스 토큰에 대한 특정 형식을 정의하지 않습니다 그러나 일부 상황에서는 JWT(JSON Web Token) 형식이 자주 사용됩니다 이를 통해 토큰 발급자는 토큰 자체에 데이터를 포함할 수 있습니다 또한 보안상의 이유로 액세스 토큰에는 만료 날짜가 있을 수 있습니다
- 역할
- 리소스 소유자: 보호된 리소스를 소유하고 이에 대한 액세스 권한을 부여할 수 있는 사용자 또는 시스템입니다
- 클라이언트: 클라이언트는 보호된 리소스에 대한 액세스가 필요한 시스템입니다 리소스에 액세스하려면 클라이언트가 적절한 액세스 토큰을 보유해야 합니다
- 권한 부여 서버: 이 서버는 액세스 토큰에 대한 클라이언트의 요청을 수신하고 자원 소유자의 성공적인 인증 및 동의 시 이를 발행합니다 권한 부여 서버는 사용자의 대화형 인증 및 동의를 처리하는 권한 부여 끝점과 기계 간 상호 작용에 관여하는 토큰 끝점의 두 끝점을 노출합니다
- 리소스 서버: 사용자의 리소스를 보호하고 클라이언트로부터 접근 요청을 받는 서버입니다 클라이언트에서 액세스 토큰을 수락하고 유효성을 검사하고 적절한 리소스를 반환합니다
- 작동 방식
- 클라이언트는 인증 서버에서 인증(인증 요청)을 요청하고 클라이언트 ID와 암호를 식별로 제공합니다 또한 액세스 토큰 또는 권한 부여 코드를 보낼 범위 및 끝점 URI(리디렉션 URI)를 제공합니다
- 권한 부여 서버는 클라이언트를 인증하고 요청된 범위가 허용되는지 확인합니다
- 리소스 소유자는 권한 부여 서버와 상호 작용하여 액세스 권한을 부여합니다
- 권한 부여 서버는 권한 부여 유형에 따라 권한 부여 코드 또는 액세스 토큰을 사용하여 클라이언트로 다시 리디렉션합니다 이에 대해서는 다음 섹션에서 설명합니다 새로 고침 토큰도 반환될 수 있습니다
- 액세스 토큰을 사용하여 클라이언트는 리소스 서버에서 리소스에 대한 액세스를 요청합니다
JWT (JSON Web Token)
- 기본
- JWT(JSON Web Token)는 당사자 간에 정보를 JSON 개체로 안전하게 전송하기 위한 간결하고 독립적인 방법을 정의하는 개방형 표준(RFC 7519)입니다 이 정보는 디지털 서명되어 있으므로 확인하고 신뢰할 수 있습니다 JWT는 비밀( HMAC 알고리즘 포함) 또는 RSA 또는 ECDSA 를 사용하는 공개/개인 키 쌍을 사용 하여 서명할 수 있습니다
API Keys
- 기본
- 애플리케이션 프로그래밍 인터페이스(API) 키는 애플리케이션 또는 사용자를 식별하고 인증하는 데 사용되는 코드입니다 API 키는 화이트 레이블이 지정된 내부 마켓플레이스와 같은 플랫폼을 통해 사용할 수 있습니다 또한 고유 식별자 역할을 하며 인증 목적으로 비밀 토큰을 제공합니다
- 사용하는 이유
- 프로젝트 승인을 위한 API키
- API 키는 프로젝트에서 사용되며 사용자와 프로ㅔㅈㄱ트 자체를 식별하기 위한 인증을 제공합니다
- 사용자 인증을 위한 API 키
- 인증 체계는 API 액세스를 요청하는 호출자를 식별하는 데 사용됩니다 엔드포인트 또는 장치는 인증 토큰을 확인하여 사용자에게 호출 권한이 있는지 확인할 수 있으며 API 서버는 인증 토큰 정보를 사용하여 요청 승인 여부를 결정할 수 있습니다
긴 글 읽어주셔서 갑사합니다 🤗
👉🏻 참고 링크