JSON 웹 토큰(JWT)은 웹 애플리케이션에서 정보를 안전하게 전송하는 방법입니다. 이는 당사자 간에 정보를 안전하게 전송하는 간결하고 독립적인 방법을 정의하는 개방형 표준(RFC 7519)입니다. 인증을 위해 API를 사용할 때 JWT 사용이 특히 중요합니다. PHP에서는 몇 가지 간단한 단계를 통해 JWT 인증을 구현할 수 있습니다.
먼저 Composer를 통해 JWT 라이브러리를 설치해야 합니다. Composer.json 파일에 다음 코드를 추가하세요.
{ "require": { "firebase/php-jwt": "3.0.*" } }
또는 다음 명령을 사용하여 터미널에 설치하세요.
composer require firebase/php-jwt
API 인증 전에 JWT를 생성해야 합니다. PHP에서는 다음 코드를 사용하여 JWT를 생성할 수 있습니다.
use FirebaseJWTJWT; $key = "example_key"; $payload = array( "iss" => "http://example.org", "aud" => "http://example.com", "iat" => 1356999524, "nbf" => 1357000000 ); $jwt = JWT::encode($payload, $key);
이 예에서는 $key라는 키를 생성하고 $payload 배열을 JWT의 페이로드로 사용합니다. 페이로드에는 "iss"(발급자), "aud"(수신자), "iat"(발급 시간), "nbf"(유효 시간) 등 API 인증에 사용되는 몇 가지 기본 정보가 포함되어 있습니다.
JWT를 확인하는 과정은 JWT를 만드는 과정과 반대입니다. JWT를 디코딩하고 그 안에 포함된 정보를 확인하려면 비밀 키와 원본 JWT를 사용해야 합니다. PHP에서는 다음 코드를 사용하여 JWT의 유효성을 검사할 수 있습니다.
use FirebaseJWTJWT; $key = "example_key"; $jwt = $_POST["jwt"]; try { $decoded = JWT::decode($jwt, $key, array('HS256')); return $decoded; } catch (Exception $e) { return false; }
여기에서는 $_POST["jwt"]를 사용하여 원시 JWT를 서버에 제출합니다. 그런 다음 키와 암호화 규칙을 JWT::decode() 메서드에 매개변수로 전달합니다. 확인에 성공하면 이 메서드는 JWT 페이로드 데이터를 반환합니다.
PHP에서는 JWT를 클라이언트에 보내고 클라이언트가 모든 요청에서 JWT를 인증 자격 증명으로 보내도록 할 수 있습니다. 다음 예에서는 JWT를 $_SESSION에 저장하고 클라이언트에 다시 보냅니다.
use FirebaseJWTJWT; $key = "example_key"; $payload = array( "iss" => "http://example.org", "aud" => "http://example.com", "iat" => 1356999524, "nbf" => 1357000000 ); $jwt = JWT::encode($payload, $key); $_SESSION["jwt"] = $jwt; header('Content-Type: application/json'); echo json_encode(array("jwt" => $jwt));
여기에서는 $_SESSION["jwt"]를 사용하여 JWT를 저장하고 JSON 개체 끝으로 클라이언트에 다시 보냅니다. 클라이언트는 JWT를 로컬에 저장하고 인증을 위해 API로 보낼 수 있습니다.
요약
PHP에서 API 인증을 위해 JWT를 사용하는 프로세스는 매우 간단합니다. 위의 단계를 따르세요. 인증에 JWT를 사용하면 보안이 향상될 뿐만 아니라 모든 요청에 대해 인증이 필요하지 않으므로 애플리케이션 성능도 향상됩니다. 다만, 해커에 의해 키가 분실되거나 도난당할 경우, 애플리케이션에 치명적인 영향을 미칠 수 있으므로 반드시 키를 안전한 곳에 보관하시기 바랍니다.
위 내용은 PHP에서 API 인증을 위해 JSON 웹 토큰을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!