Rest API 인증

Hannah·2023년 2월 3일
0

🛑 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의 인코딩입니다

OAuth 2.0 (Token in HTTP Header)

  • 기본
    • "Open Authorization"을 의미하는 OAuth 2.0은 웹사이트 또는 애플리케이션이 사용자를 대신하여 다른 웹/앱에서 호스팅하는 리소스에 액세스할 수 있도록 설계된 표준입니다
  • 원칙
    • OAuth 2.0은 액세스 토큰을 사용합니다 액세스 토큰 은 최종 사용자를 대신하여 리소스에 액세스할 수 있는 권한을 나타내는 데이터 조각입니다 OAuth 2.0은 액세스 토큰에 대한 특정 형식을 정의하지 않습니다 그러나 일부 상황에서는 JWT(JSON Web Token) 형식이 자주 사용됩니다 이를 통해 토큰 발급자는 토큰 자체에 데이터를 포함할 수 있습니다 또한 보안상의 이유로 액세스 토큰에는 만료 날짜가 있을 수 있습니다
  • 역할
    • 리소스 소유자: 보호된 리소스를 소유하고 이에 대한 액세스 권한을 부여할 수 있는 사용자 또는 시스템입니다
    • 클라이언트: 클라이언트는 보호된 리소스에 대한 액세스가 필요한 시스템입니다 리소스에 액세스하려면 클라이언트가 적절한 액세스 토큰을 보유해야 합니다
    • 권한 부여 서버: 이 서버는 액세스 토큰에 대한 클라이언트의 요청을 수신하고 자원 소유자의 성공적인 인증 및 동의 시 이를 발행합니다 권한 부여 서버는 사용자의 대화형 인증 및 동의를 처리하는 권한 부여 끝점과 기계 간 상호 작용에 관여하는 토큰 끝점의 두 끝점을 노출합니다
    • 리소스 서버: 사용자의 리소스를 보호하고 클라이언트로부터 접근 요청을 받는 서버입니다 클라이언트에서 액세스 토큰을 수락하고 유효성을 검사하고 적절한 리소스를 반환합니다
  • 작동 방식
    1. 클라이언트는 인증 서버에서 인증(인증 요청)을 요청하고 클라이언트 ID와 암호를 식별로 제공합니다 또한 액세스 토큰 또는 권한 부여 코드를 보낼 범위 및 끝점 URI(리디렉션 URI)를 제공합니다
    2. 권한 부여 서버는 클라이언트를 인증하고 요청된 범위가 허용되는지 확인합니다
    3. 리소스 소유자는 권한 부여 서버와 상호 작용하여 액세스 권한을 부여합니다
    4. 권한 부여 서버는 권한 부여 유형에 따라 권한 부여 코드 또는 액세스 토큰을 사용하여 클라이언트로 다시 리디렉션합니다 이에 대해서는 다음 섹션에서 설명합니다 새로 고침 토큰도 반환될 수 있습니다
    5. 액세스 토큰을 사용하여 클라이언트는 리소스 서버에서 리소스에 대한 액세스를 요청합니다

JWT (JSON Web Token)

  • 기본
    • JWT(JSON Web Token)는 당사자 간에 정보를 JSON 개체로 안전하게 전송하기 위한 간결하고 독립적인 방법을 정의하는 개방형 표준(RFC 7519)입니다 이 정보는 디지털 서명되어 있으므로 확인하고 신뢰할 수 있습니다 JWT는 비밀( HMAC 알고리즘 포함) 또는 RSA 또는 ECDSA 를 사용하는 공개/개인 키 쌍을 사용 하여 서명할 수 있습니다

API Keys

  • 기본
    • 애플리케이션 프로그래밍 인터페이스(API) 키는 애플리케이션 또는 사용자를 식별하고 인증하는 데 사용되는 코드입니다 API 키는 화이트 레이블이 지정된 내부 마켓플레이스와 같은 플랫폼을 통해 사용할 수 있습니다 또한 고유 식별자 역할을 하며 인증 목적으로 비밀 토큰을 제공합니다
  • 사용하는 이유
    • 프로젝트 승인을 위한 API키
      • API 키는 프로젝트에서 사용되며 사용자와 프로ㅔㅈㄱ트 자체를 식별하기 위한 인증을 제공합니다
    • 사용자 인증을 위한 API 키
      • 인증 체계는 API 액세스를 요청하는 호출자를 식별하는 데 사용됩니다 엔드포인트 또는 장치는 인증 토큰을 확인하여 사용자에게 호출 권한이 있는지 확인할 수 있으며 API 서버는 인증 토큰 정보를 사용하여 요청 승인 여부를 결정할 수 있습니다

긴 글 읽어주셔서 갑사합니다 🤗

👉🏻 참고 링크

profile
backend developer

0개의 댓글