PHP 개발: 인증 및 승인을 위해 JWT를 사용하는 방법
현대 웹 애플리케이션 개발에서 보안은 필수적인 부분이 되었습니다. 인증 및 권한 부여는 인증된 사용자만 보호된 리소스에 액세스할 수 있도록 보장하므로 이 점에서 매우 중요합니다. 사용 가능한 인증 및 권한 부여 메커니즘은 다양하며, 그 중 JWT(JSON 웹 토큰)는 간단하고 유연하며 확장 가능하고 안전하기 때문에 특히 널리 사용되는 메커니즘입니다. 이 기사에서는 인증 및 승인을 위해 PHP와 JWT를 사용하는 방법을 살펴보겠습니다.
1부: JWT 기본
JSON 웹 토큰(JWT)은 웹을 통해 청구 및 인증 정보를 안전하게 전송하기 위한 개방형 표준입니다. 헤더, 페이로드, 서명의 세 부분으로 구성됩니다.
헤더에는 알고리즘 및 토큰 유형 정보가 포함됩니다. 그 예는 다음과 같습니다:
{ "alg": "HS256", "typ": "JWT" }
페이로드에는 전송해야 하는 정보가 포함되어 있습니다. 예를 들어 사용자 이름, 역할 및 사용자에 대한 기타 정보입니다. 페이로드의 예는 다음과 같습니다.
{ "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }
서명은 JWT가 유효한지 확인하는 데 사용되는 키가 포함된 암호화된 문자열입니다. 서명의 예는 다음과 같습니다.
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(claims), secret)
파트 2: PHP를 사용하여 JWT 구현
인증 및 권한 부여에 JWT를 사용하려면 JWT를 생성하고 확인하는 PHP 클래스가 필요합니다. 간단한 PHP JWT 클래스의 구현을 살펴보겠습니다.
<?php class JWT { private $header; private $payload; private $secret; public function __construct($header, $payload, $secret) { $this->header = $header; $this->payload = $payload; $this->secret = $secret; } public function encode() { $header = $this->base64UrlEncode(json_encode($this->header)); $payload = $this->base64UrlEncode(json_encode($this->payload)); $signature = $this->base64UrlEncode(hash_hmac('sha256', $header . '.' . $payload, $this->secret, true)); return $header . '.' . $payload . '.' . $signature; } public function decode($jwt) { $parts = explode('.', $jwt); $header = json_decode($this->base64UrlDecode($parts[0]), true); $payload = json_decode($this->base64UrlDecode($parts[1]), true); $signature = $this->base64UrlDecode($parts[2]); $result = hash_hmac('sha256', $parts[0] . '.' . $parts[1], $this->secret, true); if (hash_equals($result, $signature)) { return $payload; } else { return null; } } private function base64UrlEncode($data) { return rtrim(strtr(base64_encode($data), '+/', '-_'), '='); } private function base64UrlDecode($data) { return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT)); } }
이 PHP 클래스에서 $header
, $payload
및 $secret
는 JWT 헤더, 페이로드 및 키 정보를 저장합니다. encode()
메서드는 header
, payload
및 secret
를 사용하여 JWT 문자열을 생성합니다. decode()
메서드는 지정된 JWT 문자열과 키를 사용하여 페이로드 정보를 얻습니다. $header
、$payload
和 $secret
存储了 JWT 的头部、载荷和密钥信息。encode()
方法使用 header
、payload
和 secret
来生成 JWT 字符串。decode()
方法使用给定的 JWT 字符串和密钥来获取载荷信息。
base64UrlEncode()
和 base64UrlDecode()
方法用于编码和解码 JWT 的头部和载荷。
第三部分:将 JWT 用于身份认证和授权
现在,我们已经了解了 JWT 的基础知识,并且有一个 PHP JWT 类用于生成和验证 JWT。那么,我们如何将 JWT 用于身份认证和授权呢?
首先,当用户登录时,可以使用 JWT 发送一个令牌来验证他们的身份。服务器将生成一个带有用户名和密码有效载荷的 JWT,并将其发送给客户端。客户端将在每个请求中将此令牌作为 Authorization 标头的 Bearer 认证方案进行发送。服务器将从标头中提取 JWT 并根据需要验证其有效性。
以下是一个示例 JWT 实现用于身份认证和授权:
<?php // 使用 JWT 登录 function login($username, $password) { // 检查用户名和密码是否正确 $is_valid = validate_user_credentials($username, $password); if (!$is_valid) { return null; } // 生成 JWT $header = array('alg' => 'HS256', 'typ' => 'JWT'); $payload = array('sub' => $username); $jwt = new JWT($header, $payload, $GLOBALS['secret']); $token = $jwt->encode(); // 返回 JWT return $token; } // 验证 JWT function validate_token($jwt) { $jwt = new JWT($header, $payload, $GLOBALS['secret']); $payload = $jwt->decode($jwt); if ($payload == null) { return false; } // 验证成功 return true; } // 保护资源 function protect_resource() { // 检查 JWT 是否有效 $jwt = get_authorization_header(); if (!validate_token($jwt)) { http_response_code(401); exit(); } // 资源保护 // ... } // 从标头获取 JWT function get_authorization_header() { $headers = getallheaders(); if (isset($headers['Authorization'])) { return $headers['Authorization']; } return null; } // 检查用户名和密码是否正确 function validate_user_credentials($username, $password) { // 验证用户名和密码 // ... return true; } // 密钥 $GLOBALS['secret'] = "my-secret"; // 登录并获取 JWT $token = login("username", "password"); // 将 JWT 添加到标头 $headers = array('Authorization: Bearer ' . $token); // 保护资源 protect_resource($headers);
在这个示例中,login()
方法使用 JWT
类创建一个 JWT,并返回它以便客户端使用。validate_token()
方法可以验证 JWT 的有效性。如果 JWT 无效,将返回 false。
get_authorization_header()
方法从请求标头中提取 JWT。 protect_resource()
方法用于保护 Web 资源。如果 JWT 无效,该函数将引发 401 错误。
最后,在全局范围内定义了一个密钥,$GLOBALS ['secret']
base64UrlEncode()
및 base64UrlDecode()
메서드는 JWT 헤더와 페이로드를 인코딩하고 디코딩하는 데 사용됩니다. 3부: 인증 및 승인을 위해 JWT 사용이제 JWT의 기본 사항을 이해했으며 JWT를 생성하고 검증하기 위한 PHP JWT 클래스가 있습니다. 그렇다면 인증 및 승인을 위해 JWT를 어떻게 사용합니까? 🎜🎜먼저 사용자가 로그인하면 JWT를 사용하여 토큰을 보내 신원을 확인할 수 있습니다. 서버는 사용자 이름과 비밀번호 페이로드가 포함된 JWT를 생성하여 클라이언트에 보냅니다. 클라이언트는 모든 요청의 Authorization 헤더에 Bearer 인증 체계로 이 토큰을 보냅니다. 서버는 헤더에서 JWT를 추출하고 필요한 경우 유효성을 확인합니다. 🎜🎜다음은 인증 및 승인을 위한 샘플 JWT 구현입니다. 🎜rrreee🎜이 예에서 login()
메서드는 JWT
클래스를 사용하여 JWT를 생성하고 다음을 반환합니다. 클라이언트 사용을 위해. validate_token()
메서드는 JWT의 유효성을 확인할 수 있습니다. JWT가 유효하지 않은 경우 false가 반환됩니다. 🎜🎜get_authorization_header()
메서드는 요청 헤더에서 JWT를 추출합니다. protect_resource()
메서드는 웹 리소스를 보호하는 데 사용됩니다. JWT가 유효하지 않은 경우 이 함수는 401 오류를 발생시킵니다. 🎜🎜마지막으로 전역 범위 $GLOBALS ['secret']
에 비밀이 정의됩니다. 이 비밀은 긴 문자열이어야 합니다. 이 비밀번호는 비밀 비밀번호이므로 코드 베이스에 포함하면 안 됩니다. 일반적으로 이 키는 환경 변수에 저장되며 웹 서버를 실행하는 운영 체제에서 관리됩니다. 🎜🎜결론🎜🎜JWT는 웹 애플리케이션의 인증 및 권한 부여를 위한 매우 간단하고 유연하며 확장 가능하고 안전한 메커니즘입니다. 이 기사에서는 JWT의 기본 사항을 살펴보고 JWT를 생성하고 검증하기 위한 샘플 PHP 클래스를 살펴보았습니다. 또한 인증 및 승인에 JWT를 사용하는 방법도 살펴보았습니다. 이제 웹 애플리케이션에서 JWT를 사용해 앱의 보안을 더욱 강화할 수 있습니다. 🎜위 내용은 PHP 개발: 인증 및 승인을 위해 JWT를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











현재 Win10 Enterprise Edition 2016 Long-term Service Edition을 더 이상 사용하지 않으려면 Professional Edition으로 전환할 수도 있습니다. 방법도 매우 간단합니다. 일부 콘텐츠를 변경하고 시스템 이미지만 설치하면 됩니다. win10 enterprise 버전 2016 장기서비스 버전을 professional 버전으로 변경하는 방법 1. win+R 누른 후 "regedit" 입력 2. 위 주소창에 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT 경로를 직접 붙여넣기 \CurrentVersion3 , EditionID를 찾아 내용을 "professional"로 바꿔 확인합니다.

인터넷이 발전함에 따라 점점 더 많은 웹사이트와 애플리케이션에서 데이터 상호작용을 위한 API 인터페이스를 제공해야 합니다. 이 경우 API 인증과 암호화가 매우 중요한 문제가 됩니다. 널리 사용되는 인증 및 암호화 메커니즘인 JWT와 JWE는 PHP에서 점점 더 많이 사용되고 있습니다. 이 기사에서는 PHP에서 API 인증 및 암호화를 위해 JWT 및 JWE를 사용하는 방법을 설명합니다. JWT의 기본 개념 JWT는 JSONWe를 나타냅니다.

JWT(JSONWebToken)는 JSON 개체를 보안 토큰으로 사용하여 여러 시스템 간에 사용자 ID 정보를 안전하게 전송하는 경량 인증 및 권한 부여 메커니즘입니다. ThinkPHP6은 PHP 언어를 기반으로 하는 효율적이고 유연한 MVC 프레임워크로 JWT 인증 메커니즘을 포함하여 많은 유용한 도구와 기능을 제공합니다. 이 기사에서는 웹 애플리케이션의 보안과 안정성을 보장하기 위해 JWT 인증을 위해 ThinkPHP6을 사용하는 방법을 소개합니다.

PHP의 보안 JWT 토큰 생성 및 검증 기술 분석 네트워크 애플리케이션이 발전함에 따라 사용자 인증 및 권한 부여가 점점 더 중요해지고 있습니다. JWT(JsonWebToken)는 웹 애플리케이션에서 정보를 안전하게 전송하기 위한 개방형 표준(RFC7519)입니다. PHP 개발에서는 사용자 인증 및 승인을 위해 JWT 토큰을 사용하는 것이 일반적인 관행이 되었습니다. 이 기사에서는 PHP의 보안 JWT 토큰 생성 및 확인 기술을 소개합니다. 1. JWT 생성 및 생성 방법을 이해하기 위한 기본 지식

PHP의 OAuth: JWT 권한 부여 서버 만들기 모바일 애플리케이션이 증가하고 프런트엔드와 백엔드가 분리되는 추세로 인해 OAuth는 최신 웹 애플리케이션에서 없어서는 안 될 부분이 되었습니다. OAuth는 표준화된 프로세스와 메커니즘을 제공하여 사용자의 리소스를 무단 액세스로부터 보호하는 인증 프로토콜입니다. 이 기사에서는 PHP를 사용하여 JWT(JSONWebTokens) 기반 OAuth 인증 서버를 만드는 방법을 알아봅니다. JWT는 일종의

Vue.js는 동적 웹 애플리케이션을 구축하는 데 널리 사용되는 JavaScript 프레임워크입니다. 사용자 로그인 인증 구현은 웹 애플리케이션 개발에 필요한 부분 중 하나입니다. 이 기사에서는 Vue.js, API, JWT 및 axios를 사용하여 로그인 확인을 구현하는 방법에 대한 전체 가이드를 소개합니다. Vue.js 애플리케이션 생성 먼저, 새로운 Vue.js 애플리케이션을 생성해야 합니다. VueCLI를 사용하거나 수동으로 Vue.js 애플리케이션을 만들 수 있습니다. 액시삭스 설치

Flask-Security를 사용하여 사용자 인증 및 권한 부여를 구현하는 방법 소개: 최신 웹 애플리케이션에서 사용자 인증 및 권한 부여는 필수 기능입니다. 이 프로세스를 단순화하기 위해 Flask-Security는 사용자 인증 및 권한 부여를 간단하고 편리하게 만드는 일련의 도구와 기능을 제공하는 매우 유용한 확장입니다. 이 기사에서는 Flask-Security를 사용하여 사용자 인증 및 권한 부여를 구현하는 방법을 소개합니다. 1. Flask-Security 확장 설치: 처음에

현재 인기 있는 소셜 미디어 플랫폼인 Douyin은 사람들에게 풍부한 엔터테인먼트 콘텐츠를 제공할 뿐만 아니라 많은 브랜드와 판매자가 제품을 홍보하고 판매를 달성하는 중요한 채널이 되었습니다. 그중 Douyin의 제품을 썰어 판매하는 것은 새롭고 효율적인 마케팅 방법이 되었습니다. 그럼 두인의 슬라이스 제품 인증은 어떻게 받나요? 1. 두인의 슬라이스 제품은 어떻게 긴 영상을 짧은 영상으로 분해하고 그 안에 제품 홍보 정보를 담아 시청자들의 관심을 유도하나요? 구입하다. Douyin에서 상품을 잘라서 판매할 때 가장 먼저 해야 할 일은 원본 영상의 승인을 받는 것입니다. 적합한 라이센서를 찾을 때 Douyin 플랫폼, 소셜 미디어, 업계 포럼 등 다양한 채널을 활용하는 것을 고려할 수 있습니다. 인기 영상 콘텐츠의 창작자나 저작권자를 찾아 적극적으로 소통하고,
