API Authentication(인증) | API Authorization(인가) |
---|---|
클라이언트의 신원을 확인 | API 내에서 특정 리소스나 작업에 대한 액세스를 제어 |
권한이 부여된 사용자에게만 API에 액세스할 수 있게 함 | 클라이언트가 API를 통해 수행할 수 있는 작업을 결정 |
| 무단 액세스를 방지합니다.
예: 토큰 기반 인증, OAuth, API 키 | 사용자 역할 또는 권한을 기반으로 다음을 수행할 수 있음.
예: 역할 기반 액세스 제어, 속성 기반 액세스 제어 |
가장 간단한 형태의 인증 방식으로 매 HTTP 요청마다 서버로 사용자의 이름과 비밀번호 정보를 송신한다.
HTTP 인증은 헤더에 저장되며 자격 증명은 Base64 로 인코딩되어 수행된다.
****해당 방식은 사용자를 빠르고 쉽게 인증해야 할 때 유용하다.****
다만 해당 방식은 기본 인증 정보가 평문으로 전달되기 때문에 운용 환경에 적합하지 않다.
다음은 이해를 돕기 위한 간단한 Python 코드이다.
import requests
url = "https://example.com"
# Use the following format for the username and password: "username:password"
credentials = "user:pass"
headers = {
"Authorization": f"Basic {credentials}"
}
response = requests.get(url, headers=headers)
print(response.status_code)
각 사용자에 대해 생성된 고유한 토큰을 이용하는 방법이며 매 HTTP 요청마다 헤더에 토큰 값을 저장한다.
빈번한 인증이 필요한 애플리케이션에서 적합한 방법이며, 각 사용자 자격증명 토큰에 지정된 세션 시간 동안 인증 및 인가 절차가 수행된다.
사용자가 비밀번호를 공유하지 않고도 데이터에 대한 액세스 권한을 부여할 수 있는 방법을 제공하는 인증용 개방형 표준이다.
해당 인증 방식은 사용자를 인증하고 시스템 또는 서비스에 대한 액세스를 승인하는 데 사용된다.
Twitter, Facebook, Google 과 같은 외부 서비스에서 사용자 데이터에 액세스 해야 하는 서비스에 적합하다.
💡 해당 외부서비스의 OAuth 인증을 이용해 사용자의 아이디, 비밀번호를 공유받지 않고도 데이터에 대한 액세스 권한을 부여할 수 있다.API 키는 사용자를 인증하고 API에 액세스 할 수 있도록 허용하는데 사용되는 고유한 문자열 키다.
해당 키는 서버에서 생성되어 사용자에게 제공된다.
클라이언트는 각 요청에 대해 전달받은 키를 포함하여 요청을 수행하고, 서버는 해당 키를 받아 사용자를 식별하고 리소스에 대한 액세스를 승인한다.
이를 통해 권한이 부여된 사용자와 애플리케이션만 API에 액세스할 수 있도록 할 수 있음
Most Used REST API Authentication Methods & Strategies | MojoAuth Blog