JWT(JSON 웹 토큰)는 인증 및 승인을 위한 개방형 표준입니다. JWT는 헤더(Header), 페이로드(Payload), 서명(Signature)의 세 부분으로 구성됩니다. JWT를 사용하는 경우 서버는 JWT를 클라이언트에 보내고 클라이언트는 후속 요청에서 JWT를 전달합니다. 서버는 JWT의 서명과 유효 기간을 확인하여 요청의 적법성을 확인합니다.
PHP는 일반적으로 사용되는 웹 개발 언어로, 다양한 JWT 구현 방법을 제공합니다. 다음은 PHP에서 신원 인증을 위해 JWT를 사용하는 방법을 소개합니다.
JWT를 사용하기 전에 PHP의 JWT 패키지를 설치해야 합니다. 다음 명령을 통해 설치할 수 있습니다.
composer require firebase/php-jwt
설치가 완료된 후 JWT를 프로젝트에 도입할 수 있습니다.
require_once('vendor/autoload.php'); use Firebase\JWT\JWT;
신원 인증을 수행할 때 서버에서 JWT를 생성하여 보내야 합니다. 클라이언트에게. JWT 생성 프로세스에는 헤더, 페이로드 및 서명 생성이 포함됩니다.
// 将需要编码的数据放到一个关联数组中 $payload = array( "user_id" => 123456, ); // 生成Header $header = array( "alg" => "HS256", // 采用的加密算法 "typ" => "JWT" ); // 生成JWT $jwt = JWT::encode($payload, SECRET_KEY, 'HS256'); // SECRET_KEY为加密密钥
JWT를 생성한 후 클라이언트에 보내기만 하면 됩니다.
클라이언트의 후속 요청에서는 JWT를 휴대해야 하며, 서버 확인을 통해 요청의 적법성을 확인해야 합니다. 서버가 JWT를 검증하는 과정에는 헤더(Header), 페이로드(Payload), 서명(Signature)의 세 부분을 디코딩하고 서명이 올바른지, 유효 기간이 만료되었는지 확인하는 과정이 포함됩니다.
// 解码JWT $jwt_decoded = JWT::decode($jwt, SECRET_KEY, array('HS256')); // 验证Signature和有效期 $jwt_verified = JWT::verify($jwt, SECRET_KEY, array('HS256'));
서명과 유효기간이 모두 확인되면 요청 처리를 계속할 수 있습니다. 확인이 통과되지 않으면 요청을 거부해야 합니다.
JWT에는 유효 기간이 있으며 유효 기간 동안 여러 요청에 사용할 수 있습니다. 만료 후 클라이언트는 JWT를 다시 가져와 요청에 넣어야 합니다. JWT를 처리할 때 유효기간을 확인해야 합니다.
try { // 解码JWT $jwt_decoded = JWT::decode($jwt, SECRET_KEY, array('HS256')); // 检查有效期 if ($jwt_decoded->exp < time()) { // JWT已过期 throw new Exception('JWT已过期'); } } catch (Exception $e) { // JWT无效或已过期 // 需要重新获取JWT或返回错误 }
JWT를 사용하여 인증하는 것은 간단하고 효과적인 방법입니다. PHP는 다양한 JWT 구현을 제공하므로 PHP에서 JWT를 매우 쉽게 사용할 수 있습니다. 그러나 JWT의 유효 기간과 올바른 디코딩 및 검증에 주의해야 합니다. 위 내용은 PHP를 사용하여 JWT 인증을 구현하는 단계와 주의사항입니다.
위 내용은 PHP에서 신원 인증을 위해 JWT를 사용하는 방법에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!