> 백엔드 개발 > PHP 튜토리얼 > PHP에서 API 인증을 위해 JWT를 사용하는 방법

PHP에서 API 인증을 위해 JWT를 사용하는 방법

PHPz
풀어 주다: 2023-06-17 22:08:01
원래의
1220명이 탐색했습니다.

웹 애플리케이션이 개발되면서 API 인증은 최신 웹 애플리케이션의 필수적인 부분이 되었습니다. JWT(JSON 웹 토큰)는 사용자를 인증하고 Single Sign-On을 구현하는 안전하고 안정적인 방법을 제공하는 인증 및 권한 부여를 위한 개방형 표준입니다. 이 글에서는 PHP에서 API 인증을 위해 JWT를 사용하는 방법을 설명합니다.

JWT란 무엇인가요?

JSON 웹 토큰(JWT)은 JSON 형식을 기반으로 하는 표준으로, 인터넷을 통해 정보를 안전하게 전송하는 데 사용할 수 있습니다. JWT는 일반적으로 헤더, 페이로드, 서명의 세 부분으로 구성됩니다.

  • 헤더: HMAC SHA256 또는 RSA와 같이 JWT에서 사용하는 알고리즘이 포함되어 있습니다.
  • 페이로드: 사용자, 권한 또는 기타 관련 정보에 대한 데이터가 포함되어 있습니다.
  • 서명: 토큰의 신뢰성과 무결성을 확인하는 데 사용됩니다.

JWT 워크플로우

사용자가 로그인하면 서버는 사용자에게 JWT를 할당합니다. 이 JWT는 클라이언트로 전송되어 클라이언트의 쿠키 또는 로컬 저장소에 저장됩니다. 사용자가 보호된 API에 액세스하려고 하면 클라이언트는 JWT를 서버로 다시 보냅니다. 서버는 JWT의 서명을 확인하고 페이로드의 데이터를 확인하여 사용자에게 API에 액세스할 수 있는 권한이 있는지 확인합니다. JWT가 유효성 검사를 통과하면 서버는 사용자에게 API에 액세스할 수 있는 권한을 부여합니다.

PHP를 사용하여 JWT 인증 구현

PHP에서는 널리 사용되는 일부 오픈 소스 라이브러리를 사용하여 JWT 인증을 구현할 수 있습니다. 이 문서에서는 JWT를 생성하고 확인하기 위한 간단한 API를 제공하는 Firebase의 JWT 라이브러리를 사용합니다. 간단한 예는 다음과 같습니다.

  1. Firebase JWT 라이브러리 설치:

composer require firebase/php-jwt

  1. 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');
로그인 후 복사
  1. JWT 확인:

아래 코드는 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;
로그인 후 복사
  1. 클라이언트에게 JWT 보내기:

JWT를 생성한 후 이를 클라이언트에 보내고 쿠키나 로컬 저장소에 저장할 수 있습니다.

// Set JWT as a cookie
setcookie('token', $jwt, time()+3600, '/');
로그인 후 복사
  1. 클라이언트가 보낸 JWT 확인:

서버 측과 유사한 코드를 사용하여 클라이언트가 보낸 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿