PHP에서 토큰 인증을 사용한 API
API를 공개가 아닌 비공개로, 암호로만 접근 가능하도록 만들 수 있습니다. 이 경우, 우리의 API에 요청할 때마다 매개변수 외에도 올바른 암호를 전송해야 합니다. 이러한 암호를 토큰이라고 합니다.
우리 API의 사용자는 이 토큰을 어떤 식으로든 얻어야 합니다. 예를 들어, 구매할 수 있습니다. 이 경우 각 구매자마다 자신의 토큰을 갖게 됩니다.
예제를 통해 토큰 작업을 살펴보겠습니다. 우리 API가 매개변수로 숫자를 받아 그 숫자의 제곱을 반환한다고 가정해 봅시다. 이 API를 비공개로 만들어 보겠습니다. 구현을 시작해 봅시다.
우선 간단하게 하나의 공통 토큰을 만들고 파일에 평문으로 저장하겠습니다:
<?php
$token = '12345';
?>
매개변수와 토큰을 전송하여 우리 API에 이렇게 요청할 것입니다:
http://api.loc/index.php?num=100&token=12345
토큰 확인이 있는 API를 구현해 보겠습니다:
<?php
$token = '12345';
if (isset($_GET['token']) and $_GET['token'] === $token) {
if (isset($_GET['num'])) {
echo $_GET['num'] ** 2;
} else {
echo 'error';
}
} else {
echo 'incorrect token';
}
?>
생일 날짜를 매개변수로 받아 그 날짜까지 남은 일수를 반환하는 API를 만드세요. 토큰을 통한 인증을 구현하세요.
이전 작업을 수정하여 매개변수와 토큰이 모두 POST 메서드로 전송되도록 하세요.
이전 작업을 수정하여 토큰이 HTTP 헤더 X-Token를 통해 전송되도록 하세요.
토큰이 데이터베이스에 저장되고 각 API 사용자가 자신의 토큰을 갖도록 하세요.
각 API 사용자의 요청 횟수를 하루에 10회로 제한하세요.