Autoryzacja w REST API
Założenie: Przedstawimy podstawowe techniki autoryzacji w REST API, aby zabezpieczyć nasze endpointy przed nieautoryzowanym dostępem.
Krok po kroku:
- Użycie klucza API: Najprostsza metoda. Każdy klient otrzymuje unikalny klucz, który musi dołączyć do żądania (np. w nagłówku `X-API-Key`).
- Autoryzacja za pomocą tokenów JWT (JSON Web Token): Bardziej zaawansowana metoda, oferująca lepsze bezpieczeństwo. Po pomyślnej uwierzytelnieniu serwer generuje token JWT, który klient używa w kolejnych żądaniach.
// Kod po stronie klienta (np. w JavaScript)
const apiKey = 'YOUR_API_KEY';
fetch('/api/data', {
headers: {
'X-API-Key': apiKey
}
});
// Kod po stronie serwera (PHP)
$apiKey = $_SERVER['HTTP_X_API_KEY'];
if ($apiKey !== 'YOUR_API_KEY') {
http_response_code(401); // Unauthorized
exit;
}
// ... dalsza część kodu ...
Ten fragment kodu pokazuje, jak klient wysyła klucz API w nagłówku żądania, a serwer PHP go weryfikuje. Jeśli klucz jest nieprawidłowy, zwracany jest kod statusu 401 (Unauthorized).
// Przykładowy kod (uproszczony) - wymaga biblioteki do obsługi JWT
// ... generowanie tokenu JWT ...
$token = generateJWT($userId, $userRoles);
// ... wysyłanie tokenu w nagłówku Authorization ...
// Weryfikacja tokenu na serwerze
$token = $_SERVER['HTTP_AUTHORIZATION'];
if (!verifyJWT($token)) {
http_response_code(401);
exit;
}
Ten fragment pokazuje, że JWT jest generowany i weryfikowany. Biblioteki takie jak `firebase/php-jwt` ułatwiają pracę z JWT.
Ten przykład pokazuje podstawowe techniki autoryzacji w REST API. Istnieje wiele innych metod, takich jak OAuth 2.0, które zapewniają jeszcze wyższy poziom bezpieczeństwa. Zachęcamy do dalszego zgłębiania tematu!