웹 애플리케이션이 개발되면서 API 인증은 최신 웹 애플리케이션의 필수적인 부분이 되었습니다. JWT(JSON 웹 토큰)는 사용자를 인증하고 Single Sign-On을 구현하는 안전하고 안정적인 방법을 제공하는 인증 및 권한 부여를 위한 개방형 표준입니다. 이 글에서는 PHP에서 API 인증을 위해 JWT를 사용하는 방법을 설명합니다.
JWT란 무엇인가요?
JSON 웹 토큰(JWT)은 JSON 형식을 기반으로 하는 표준으로, 인터넷을 통해 정보를 안전하게 전송하는 데 사용할 수 있습니다. JWT는 일반적으로 헤더, 페이로드, 서명의 세 부분으로 구성됩니다.
JWT 워크플로우
사용자가 로그인하면 서버는 사용자에게 JWT를 할당합니다. 이 JWT는 클라이언트로 전송되어 클라이언트의 쿠키 또는 로컬 저장소에 저장됩니다. 사용자가 보호된 API에 액세스하려고 하면 클라이언트는 JWT를 서버로 다시 보냅니다. 서버는 JWT의 서명을 확인하고 페이로드의 데이터를 확인하여 사용자에게 API에 액세스할 수 있는 권한이 있는지 확인합니다. JWT가 유효성 검사를 통과하면 서버는 사용자에게 API에 액세스할 수 있는 권한을 부여합니다.
PHP를 사용하여 JWT 인증 구현
PHP에서는 널리 사용되는 일부 오픈 소스 라이브러리를 사용하여 JWT 인증을 구현할 수 있습니다. 이 문서에서는 JWT를 생성하고 확인하기 위한 간단한 API를 제공하는 Firebase의 JWT 라이브러리를 사용합니다. 간단한 예는 다음과 같습니다.
composer require firebase/php-jwt
다음 코드는 서명과 맞춤 페이로드가 포함된 JWT를 만듭니다. 데이터.
use FirebaseJWTJWT; // Set the payload data (custom data) $payload = [ "user_id" => 1, "username" => "john.doe", ]; // Generate JWT using secret key $jwt = JWT::encode($payload, 'secret_key');
아래 코드는 JWT의 서명을 확인하고 페이로드 데이터가 유효한지 확인합니다.
use FirebaseJWTJWT; // Verify JWT using secret key try { $decoded = JWT::decode($jwt, 'secret_key', array('HS256')); } catch (Exception $e) { // Handle invalid JWT } // Access the payload data $user_id = $decoded->user_id; $username = $decoded->username;
JWT를 생성한 후 이를 클라이언트에 보내고 쿠키나 로컬 저장소에 저장할 수 있습니다.
// Set JWT as a cookie setcookie('token', $jwt, time()+3600, '/');
서버 측과 유사한 코드를 사용하여 클라이언트가 보낸 JWT를 확인할 수 있습니다.
use FirebaseJWTJWT; // Get JWT from cookie or local storage $jwt = $_COOKIE['token']; // Verify JWT using secret key try { $decoded = JWT::decode($jwt, 'secret_key', array('HS256')); } catch (Exception $e) { // Handle invalid JWT } // Access the payload data $user_id = $decoded->user_id; $username = $decoded->username;
Summary
JWT는 최신 웹 애플리케이션을 위한 안전하고 안정적인 인증 메커니즘입니다. JWT 인증은 PHP 및 Firebase JWT 라이브러리를 사용하여 쉽게 구현할 수 있습니다. API 인증을 구현할 때 JWT를 안전한 장소에만 저장하고 보호된 전송을 위해 HTTPS를 사용하세요.
위 내용은 PHP에서 API 인증을 위해 JWT를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!