Cách mã hóa jwt trong php?

Nó có thể nhận một mảng tham số và có thể tạo chuỗi mã thông báo theo đặc tả Mã thông báo Web JSON

Lớp cũng có thể lấy chuỗi mã thông báo JWT và giải mã nó để trích xuất các giá trị tham số mã thông báo ban đầu thành một mảng

Cách mã hóa jwt trong php?

tháng 6 năm 2022
Số 8JSON Web Token (JWT) là một tiêu chuẩn để mã hóa và truyền thông tin nhạy cảm về bảo mật bằng cách sử dụng định dạng JSON để mã hóa các đối tượng dưới dạng chuỗi

Lớp này cung cấp một phương tiện đơn giản để mã hóa và giải mã dữ liệu bằng tiêu chuẩn JWT

Các nhà phát triển có thể sử dụng lớp này với các thành phần khác triển khai các giao thức và biện pháp bảo mật phức tạp hơn, chẳng hạn như OAuth

Manuel Lemos

Cách mã hóa jwt trong php?
giải thưởng sáng tạo
Cách mã hóa jwt trong php?

đề cử. 5x


mô-đun đơn giản để giúp tạo mã thông báo đơn giản bằng cách sử dụng php

tạo một phiên bản mới của lớp JWT, sẽ giúp bạn tạo mã thông báo mới hoặc xác thực mã thông báo hiện có

    $data=[
        "data"=>"hello Github",
        "expired"=>300
    ];
    $tken= new JWT;
    $_token=$tken->generate($data)
    echo $_token;

lớp Token có 2 Phương thức. * phát ra. sử dụng phương pháp này để tạo khóa mã thông báo mới. phải mất 2 tham số. - tham số đầu tiên là một mảng thông tin theo dữ liệu được mã hóa. nó có 2 phím. 1. data. nơi bạn có thể lưu trữ tất cả thông tin mà bạn muốn được mã hóa; . expired. (tùy chọn) mã thông báo của bạn sẽ được sử dụng trong bao lâu;

- tham số thứ hai (tùy chọn) là cypherkye để mã hóa dữ liệu của bạn, theo mặc định, mã thông báo tạo khóa cypherkey cho khóa mã thông báo

Mã thông báo web JSON (JWT) cho phép bạn triển khai xác thực không trạng thái (không sử dụng phiên phía máy chủ). JWT được ký điện tử bằng khóa bí mật và có thể chứa nhiều thông tin khác nhau về người dùng. danh tính, vai trò, quyền, v.v. ở định dạng JSON. Thông tin này được mã hóa đơn giản và không được mã hóa. Tuy nhiên, do có chữ ký điện tử nên không thể sửa đổi tải trọng nếu không có quyền truy cập vào khóa bí mật

JWT là một chủ đề tương đối nóng vì chúng được sử dụng rộng rãi (đặc biệt là trong các ứng dụng một trang và API REST) ​​nhưng nhiều nhà phát triển không hiểu rõ về chúng. Trong bài đăng này, tôi sẽ thảo luận về JWT là gì, chúng giải quyết vấn đề gì, cách chúng hoạt động và cách sử dụng chúng một cách an toàn. Sau đó, tôi sẽ hướng dẫn bạn quy trình tạo và xác minh JWT từ đầu bằng PHP (và không có bất kỳ thư viện bên ngoài nào). Cuối cùng, tôi sẽ chỉ cho bạn cách sử dụng thư viện JWT của Okta để tự động xử lý xác thực các JWT của Okta. Okta là một dịch vụ API cho phép bạn tạo, chỉnh sửa và lưu trữ an toàn tài khoản người dùng và dữ liệu tài khoản người dùng, đồng thời kết nối chúng với một hoặc nhiều ứng dụng. Đăng ký tài khoản nhà phát triển miễn phí mãi mãi và khi bạn hoàn tất, hãy quay lại để tìm hiểu thêm về JWT

Bí mật lớn về xác thực người dùng

Trong những ngày đen tối của Internet, đã có xác thực dựa trên phiên. Người dùng sẽ đăng nhập và nếu máy chủ chấp nhận thông tin đăng nhập của họ, nó sẽ tạo phiên cho họ (trong tệp, trong cơ sở dữ liệu hoặc trong kho dữ liệu khóa-giá trị trong bộ nhớ như Memcached hoặc Redis). Sau đó, máy chủ sẽ gửi lại một cookie chứa

data = base64urlEncode(header) + "." + base64urlEncode(payload)
hashedData = hash(data, secret)
signature = base64urlEncode(hashedData)
8. Trình duyệt của người dùng sẽ cung cấp cookie cho mỗi yêu cầu tiếp theo và máy chủ sẽ biết danh tính của người dùng mà không cần liên tục hỏi tên người dùng và mật khẩu

Cách tiếp cận này có một số nhược điểm. ví dụ: nếu bạn muốn mở rộng quy mô theo chiều ngang, bạn sẽ cần một hệ thống lưu trữ trung tâm cho các phiên, đây là một điểm lỗi duy nhất. Tuy nhiên, hãy để tôi nói cho bạn một bí mật lớn. các phiên hoạt động trước đây và chúng vẫn hoạt động tốt đối với phần lớn các trường hợp sử dụng. Nếu tất cả những gì bạn có là một trang web đơn giản, nơi người dùng đăng ký, sau đó đăng nhập, sau đó nhấp chuột và thực hiện một số nội dung, phiên phía máy chủ là hoàn hảo. Tất cả các khung Web hiện đại vẫn hoạt động theo cách này theo mặc định. Bạn thậm chí có thể có tất cả các lợi ích về mật mã của JWT với các phiên đơn giản nếu bạn quan tâm đến điều đó

Tuy nhiên, JWT rất có ý nghĩa nếu bạn đang xây dựng các dịch vụ API hỗ trợ giao tiếp giữa máy với máy hoặc máy khách-máy chủ (như ứng dụng một trang hoặc ứng dụng di động). Chúng cũng có ý nghĩa nếu có nhiều hơn hai bên tham gia vào một yêu cầu hoặc nếu bạn đang triển khai các hệ thống đăng nhập liên kết/đăng nhập một lần

JWT hoạt động như thế nào

Hệ thống xác thực phải cung cấp điểm cuối đăng nhập. Người dùng gửi thông tin đăng nhập của họ đến hệ thống đăng nhập (có thể là đăng nhập của bên thứ ba). Sau khi đăng nhập thành công, máy chủ sẽ tạo JWT và gửi cho máy khách. Ứng dụng khách phải lưu trữ JWT này và chuyển nó với mỗi lệnh gọi API tiếp theo. Máy chủ có thể sử dụng JWT để xác minh rằng lệnh gọi API đến từ người dùng được ủy quyền. Hệ thống xác thực có thể xác minh tính toàn vẹn của JWT và tải trọng của nó chỉ bằng khóa bí mật (không có bất kỳ lệnh gọi nào đến cơ sở dữ liệu hoặc hoạt động mạng)

JWT có thể được ký bằng bí mật (với thuật toán HMAC) hoặc cặp khóa công khai/riêng tư bằng RSA hoặc ECDSA

Điều cực kỳ quan trọng là phải hiểu rằng JWT không ẩn hoặc che khuất dữ liệu mà chúng nắm giữ. Tải trọng được mã hóa tầm thường và không được mã hóa và người dùng có thể đọc nó (vì vậy không lưu trữ bất kỳ thứ gì nhạy cảm ở đó). Chỉ chữ ký được mã hóa và máy chủ xác thực có thể sử dụng để xác minh rằng thông tin trong mã thông báo chưa bị sửa đổi

Lưu trữ và sử dụng JWT một cách an toàn

Ứng dụng khách sẽ lưu trữ JWT và gửi nó cùng với mọi yêu cầu tới API. Nếu mã thông báo bị đánh cắp, bên thứ ba độc hại có thể mạo danh người dùng hợp pháp miễn là mã thông báo hợp lệ. Do đó, điều quan trọng là phải thực hiện tất cả các biện pháp có thể để giữ an toàn cho mã thông báo

Có hai cách tiêu chuẩn để lưu trữ mã thông báo. trong bộ nhớ cục bộ/phiên của trình duyệt hoặc trong cookie. Dưới đây là những rủi ro chính và cân nhắc khi quyết định lựa chọn phương án nào

Tấn công kẻ đứng giữa – bạn cần đảm bảo rằng ứng dụng chỉ hoạt động trên https để không thể đánh cắp mã thông báo bằng cách chặn lưu lượng truy cập (e. g. trong mạng wi-fi công cộng)

Các cuộc tấn công Cross-Site Scripting (tiêm JavaScript, XSS) – bộ lưu trữ cục bộ/phiên có thể truy cập thông qua API JavaScript khiến nó dễ bị tấn công XSS (nếu tin tặc có thể thực hiện tấn công XSS thành công, cho phép chúng chạy JavaScript của riêng chúng bên trong . Việc bảo mật hoàn toàn một trang web khỏi các cuộc tấn công XSS không phải lúc nào cũng đơn giản, đặc biệt nếu trang web dựa trên nội dung do người dùng tạo. Do đó, tốt hơn hết là lưu trữ mã thông báo trong cookie

Các cuộc tấn công giả mạo yêu cầu trên nhiều trang web (CSRF) – đặt cờ chỉ https cho cookie giúp loại bỏ nguy cơ tấn công XSS hoặc tấn công trung gian (vì những cookie này không có sẵn cho JavaScript hoặc qua các kết nối không an toàn . Tuy nhiên, bạn vẫn cần xử lý rủi ro CSRF. Có nhiều cách khác nhau để làm điều đó – một tùy chọn đặc biệt hiệu quả là sử dụng thuộc tính cookie

data = base64urlEncode(header) + "." + base64urlEncode(payload)
hashedData = hash(data, secret)
signature = base64urlEncode(hashedData)
9. Hầu hết các khung ứng dụng Web hiện đại cũng bao gồm một số cách mặc định để xử lý CSRF

Còn một chủ đề cuối cùng tôi muốn thảo luận về bảo mật JWT – cách thu hồi quyền truy cập của người dùng (ví dụ: người dùng thông báo cho bạn rằng mã thông báo của họ bị xâm phạm, vì vậy bạn muốn buộc họ đăng nhập lại hoặc người dùng bị cấm

Không có câu trả lời dễ dàng vì bản chất không trạng thái của JWT – chúng tự cung cấp và (về mặt lý thuyết) nên bao gồm tất cả thông tin cần thiết về quyền của người dùng mà không cần tham khảo các nguồn bên ngoài. Điều này có nghĩa là bạn không thể buộc chúng hết hạn, vì vậy bạn phải giữ thời gian hết hạn ngắn (thường là 15 đến 60 phút và sử dụng mã thông báo làm mới được theo dõi ở phía máy chủ và được xác minh tính hợp lệ trước khi cấp lại mã thông báo truy cập). Nếu bạn nhất định phải có khả năng loại bỏ người dùng ngay lập tức, thì bạn phải theo dõi từng mã thông báo truy cập ở phần phụ trợ và xác minh rằng nó không nằm trong danh sách đen đối với mọi yêu cầu – nhưng cách tiếp cận này làm mất đi lợi ích chính của JWT (xác thực không trạng thái) và bạn quay lại

Tóm lại, đây là cách an toàn để xử lý JWT

  • Ký mã thông báo của bạn bằng khóa mạnh và giữ cho thời gian hết hạn của chúng ở mức thấp
  • Lưu trữ chúng trong cookie chỉ có https
  • Sử dụng thuộc tính cookie
    {
        "require": {
            "vlucas/phpdotenv": "^2.4"
        },
        "autoload": {
            "psr-4": {
                "Src\\": "src/"
            }
        }
    }
    
    0 nếu nó không ảnh hưởng đến chức năng của ứng dụng của bạn
  • Sử dụng cách xử lý CSRF mặc định của khung ứng dụng Web của bạn nếu
    {
        "require": {
            "vlucas/phpdotenv": "^2.4"
        },
        "autoload": {
            "psr-4": {
                "Src\\": "src/"
            }
        }
    }
    
    0 không phải là một tùy chọn dành cho bạn
  • Xây dựng mã thông báo CSRF và mã phụ trợ của riêng bạn để xác minh từng yêu cầu biểu mẫu nếu bạn không đủ may mắn để sử dụng một khung không xử lý CSRF ngay lập tức
  • Luôn xác minh chữ ký ở phía máy chủ trước khi bạn tin tưởng bất kỳ thông tin nào trong JWT

Cấu trúc của một JWT

Bây giờ chúng ta hãy đi vào chi tiết cơ bản của việc xử lý JWT. Định nghĩa

“Mã thông báo web JSON (JWT) là một đối tượng JSON được định nghĩa trong RFC 7519 như một cách an toàn để biểu thị một tập hợp thông tin giữa hai bên. Mã thông báo bao gồm tiêu đề, tải trọng và chữ ký. ”

Vì vậy, JWT chỉ là một chuỗi ở định dạng này

header.payload.signature

Thành phần tiêu đề của JWT chứa thông tin về cách tính chữ ký JWT

Thành phần tải trọng của JWT là thông tin về người dùng được lưu trữ bên trong JWT (còn được gọi là 'yêu cầu' của JWT)

Chữ ký được tính như thế này

data = base64urlEncode(header) + "." + base64urlEncode(payload)
hashedData = hash(data, secret)
signature = base64urlEncode(hashedData)

Bí mật chỉ được biết bởi máy chủ xác thực (và máy chủ ứng dụng cung cấp API, nếu nó khác với máy chủ xác thực)

Tạo và xác thực JWT từ đầu bằng PHP

Chúng ta sẽ bắt đầu một dự án PHP mới bằng cách tạo một thư mục

{
    "require": {
        "vlucas/phpdotenv": "^2.4"
    },
    "autoload": {
        "psr-4": {
            "Src\\": "src/"
        }
    }
}
2 và một tệp
{
    "require": {
        "vlucas/phpdotenv": "^2.4"
    },
    "autoload": {
        "psr-4": {
            "Src\\": "src/"
        }
    }
}
3 đơn giản chỉ với một phụ thuộc (hiện tại). thư viện DotEnv sẽ cho phép chúng tôi giữ khóa bí mật của mình trong tệp
{
    "require": {
        "vlucas/phpdotenv": "^2.4"
    },
    "autoload": {
        "psr-4": {
            "Src\\": "src/"
        }
    }
}
4 bên ngoài kho lưu trữ mã của chúng tôi

{
    "require": {
        "vlucas/phpdotenv": "^2.4"
    },
    "autoload": {
        "psr-4": {
            "Src\\": "src/"
        }
    }
}
3

{
    "require": {
        "vlucas/phpdotenv": "^2.4"
    },
    "autoload": {
        "psr-4": {
            "Src\\": "src/"
        }
    }
}

Chúng tôi cũng đã định cấu hình trình tải tự động PSR-4 sẽ tự động tìm kiếm các lớp PHP trong thư mục

{
    "require": {
        "vlucas/phpdotenv": "^2.4"
    },
    "autoload": {
        "psr-4": {
            "Src\\": "src/"
        }
    }
}
2

Chúng tôi có thể cài đặt các phụ thuộc của mình ngay bây giờ

composer install

Chúng tôi có một thư mục

{
    "require": {
        "vlucas/phpdotenv": "^2.4"
    },
    "autoload": {
        "psr-4": {
            "Src\\": "src/"
        }
    }
}
7 và phần phụ thuộc DotEnv đã được cài đặt (chúng tôi cũng có thể sử dụng trình tải tự động của mình để tải các lớp của chúng tôi từ
{
    "require": {
        "vlucas/phpdotenv": "^2.4"
    },
    "autoload": {
        "psr-4": {
            "Src\\": "src/"
        }
    }
}
2 mà không có lệnh gọi
{
    "require": {
        "vlucas/phpdotenv": "^2.4"
    },
    "autoload": {
        "psr-4": {
            "Src\\": "src/"
        }
    }
}
9)

Hãy tạo một tệp

composer install
0 cho dự án của chúng tôi với hai dòng trong đó, vì vậy thư mục
{
    "require": {
        "vlucas/phpdotenv": "^2.4"
    },
    "autoload": {
        "psr-4": {
            "Src\\": "src/"
        }
    }
}
7 và tệp
{
    "require": {
        "vlucas/phpdotenv": "^2.4"
    },
    "autoload": {
        "psr-4": {
            "Src\\": "src/"
        }
    }
}
4 cục bộ của chúng tôi sẽ bị bỏ qua

composer install
0

/vendor
.env

Tiếp theo, chúng ta sẽ tạo một tệp

composer install
4 với một biến.
composer install
5 để giữ khóa bí mật của chúng tôi (được sử dụng khi tạo và xác minh JWT)

composer install
4

SECRET=

và chúng tôi sẽ sao chép

composer install
4 sang
{
    "require": {
        "vlucas/phpdotenv": "^2.4"
    },
    "autoload": {
        "psr-4": {
            "Src\\": "src/"
        }
    }
}
4 nơi chúng tôi sẽ điền vào khóa bí mật thực sự của mình (nó sẽ bị Git bỏ qua vì vậy nó sẽ không kết thúc trong kho lưu trữ của chúng tôi)

Chúng tôi sẽ cần một tệp

composer install
9 để tải các biến môi trường của chúng tôi (sau này, nó cũng sẽ thực hiện một số bước khởi động bổ sung cho dự án của chúng tôi)

composer install
9


require 'vendor/autoload.php';
use Dotenv\Dotenv;

$dotenv = new DotEnv(__DIR__);
$dotenv->load();

Hãy tạo một công cụ đơn giản

/vendor
.env
1 sẽ tạo khóa bí mật cho chúng ta, để chúng ta có thể đặt nó vào tệp
{
    "require": {
        "vlucas/phpdotenv": "^2.4"
    },
    "autoload": {
        "psr-4": {
            "Src\\": "src/"
        }
    }
}
4

/vendor
.env
1



$secret = bin2hex(random_bytes(32));
echo "Secret:\n";
echo $secret;
echo "\nCopy this key to the .env file like this:\n";
echo "SECRET=" . $secret . "\n";

Nếu bạn chạy nó trong dòng lệnh, bạn sẽ nhận được kết quả như thế này

$ php generate_key.php


Secret:
7c32d31dbdd39f2111da0b1dea59e94f3ed715fd8cdf0ca3ecf354ca1a2e3e30
Copy this key to the .env file like this:
SECRET=7c32d31dbdd39f2111da0b1dea59e94f3ed715fd8cdf0ca3ecf354ca1a2e3e30

Làm theo hướng dẫn và thêm khóa bí mật của bạn vào tệp

{
    "require": {
        "vlucas/phpdotenv": "^2.4"
    },
    "autoload": {
        "psr-4": {
            "Src\\": "src/"
        }
    }
}
4 (đừng lo, khóa trong ví dụ trên không được sử dụng ở bất kỳ đâu)

Tiếp theo, chúng tôi sẽ xây dựng một công cụ để tạo các JWT mẫu (với tải trọng được mã hóa cứng mà bạn có thể sửa đổi theo ý muốn). Trước tiên, chúng tôi sẽ thêm hàm

/vendor
.env
5 vào tệp
composer install
9 của chúng tôi

composer install
9


require 'vendor/autoload.php';
use Dotenv\Dotenv;

$dotenv = new DotEnv(__DIR__);
$dotenv->load();

// PHP has no base64UrlEncode function, so let's define one that
// does some magic by replacing + with -, / with _ and = with ''.
// This way we can pass the string within URLs without
// any URL encoding.
function base64UrlEncode($text)
{
    return str_replace(
        ['+', '/', '='],
        ['-', '_', ''],
        base64_encode($text)
    );
}

Đây là công cụ

/vendor
.env
8

/vendor
.env
8

data = base64urlEncode(header) + "." + base64urlEncode(payload)
hashedData = hash(data, secret)
signature = base64urlEncode(hashedData)
0

Bạn có thể chạy công cụ từ dòng lệnh để có kết quả như thế này

data = base64urlEncode(header) + "." + base64urlEncode(payload)
hashedData = hash(data, secret)
signature = base64urlEncode(hashedData)
1

Sau đó, bạn có thể kiểm tra mã thông báo tại https. //jsonwebtoken. io để xem tiêu đề và tải trọng và xác nhận chúng khớp với ví dụ

Công cụ tiếp theo mà chúng tôi sẽ xây dựng sẽ cho phép bạn xác thực JWT được tạo bởi công cụ

SECRET=
0 (bằng cách xác minh thời gian hết hạn và chữ ký). Chúng tôi sẽ sử dụng Carbon để giúp chúng tôi tính toán thời gian hết hạn, vì vậy hãy thêm thư viện

data = base64urlEncode(header) + "." + base64urlEncode(payload)
hashedData = hash(data, secret)
signature = base64urlEncode(hashedData)
2

Đây là kịch bản xác nhận

SECRET=
1

data = base64urlEncode(header) + "." + base64urlEncode(payload)
hashedData = hash(data, secret)
signature = base64urlEncode(hashedData)
3

Nếu bạn muốn xác thực JWT, bạn có thể cung cấp nó thông qua dòng lệnh

data = base64urlEncode(header) + "." + base64urlEncode(payload)
hashedData = hash(data, secret)
signature = base64urlEncode(hashedData)
4

Bạn sẽ nhận được một đầu ra như thế này

data = base64urlEncode(header) + "." + base64urlEncode(payload)
hashedData = hash(data, secret)
signature = base64urlEncode(hashedData)
5

Bạn có thể thử nghiệm bằng cách thay đổi thời gian hết hạn của mã thông báo, thay đổi khóa bí mật giữa việc tạo và xác thực mã thông báo, sửa đổi tải trọng mà không cần tạo lại chữ ký, v.v.

Đó là tất cả những gì cần làm để xây dựng và xác thực JWT. Tất nhiên, bạn sẽ hiếm khi phải tự mình làm điều đó vì có rất nhiều thư viện cho mục đích này.

Sử dụng JWT cho Mã thông báo truy cập trong PHP

Okta sử dụng mã thông báo truy cập JWT để triển khai Oauth 2. 0. Chúng được ký bằng Khóa web JSON riêng (JWK)

Tổng quan cấp cao về xác thực mã thông báo truy cập trông như thế này

  • Truy xuất và phân tích cú pháp Khóa web JSON Okta (JWK) của bạn, khóa này sẽ được ứng dụng của bạn kiểm tra định kỳ và lưu vào bộ đệm ẩn
  • Giải mã mã thông báo truy cập ở định dạng Mã thông báo Web JSON
  • Xác minh chữ ký được sử dụng để ký mã thông báo truy cập
  • Xác minh các khiếu nại được tìm thấy bên trong mã thông báo truy cập

Okta cung cấp một thư viện (Trình xác minh JWT của Okta) cho PHP có thể được tích hợp vào bất kỳ dự án PHP nào để cung cấp xác minh liền mạch mã thông báo truy cập Okta

Cách thức hoạt động của Trình xác minh JWT

Trình xác minh JWT Okta có thể được cài đặt thông qua trình soạn thảo

data = base64urlEncode(header) + "." + base64urlEncode(payload)
hashedData = hash(data, secret)
signature = base64urlEncode(hashedData)
6

Thư viện yêu cầu thư viện JWT và thư viện tuân thủ PSR-7. Bạn có thể cài đặt một cái hiện có như thế này

data = base64urlEncode(header) + "." + base64urlEncode(payload)
hashedData = hash(data, secret)
signature = base64urlEncode(hashedData)
7

Ngoài ra, bạn cũng có thể cung cấp triển khai của riêng mình. Để tạo bộ điều hợp của riêng bạn, chỉ cần triển khai

SECRET=
2 trong lớp của riêng bạn

Tìm hiểu thêm về PHP, JWT và Xác thực an toàn

Bạn có thể tìm thấy toàn bộ ví dụ mã ở đây. liên kết GitHub

Nếu bạn muốn tìm hiểu sâu hơn về các chủ đề được đề cập trong bài viết này, các tài nguyên sau đây là điểm khởi đầu tuyệt vời

  • Xác thực mã thông báo truy cập
  • Bắt đầu với PHP + Okta
  • Thư viện Trình xác minh JWT Okta
  • Điều gì xảy ra nếu JWT của bạn bị đánh cắp?
  • Thêm Xác thực vào Ứng dụng PHP của bạn sau 5 phút

Giống như những gì bạn đã học ngày hôm nay?

Làm cách nào để cài đặt JWT trong PHP?

Đầu tiên, khởi động máy chủ cục bộ của bạn, sau đó chuyển đến thư mục htdocs hoặc www, và tại đây, hãy tạo một thư mục mới có tên php-jwt. Sau đó, bạn cần tải xuống JWT bên trong thư mục này để sử dụng JWT . Bạn có thể sao chép JWT từ Github hoặc bạn có thể tải xuống qua Composer.

Làm cách nào để xác thực mã thông báo mang trong PHP?

Xác thực mã thông báo mang được thực hiện bằng cách gửi mã thông báo bảo mật với mọi yêu cầu HTTP mà chúng tôi thực hiện tới máy chủ . Bạn có thể thực hiện xác thực vật mang với bất kỳ ngôn ngữ lập trình nào, kể cả PHP. Mã thông báo mang là một chuỗi mật mã không có ý nghĩa hoặc mục đích sử dụng nhưng trở nên quan trọng trong một hệ thống mã thông báo phù hợp.

Làm cách nào để mã hóa mã thông báo JWT trong PHP?

Cách tạo mã thông báo web JSON trong PHP .
Tạo tiêu đề và tải trọng. Để bắt đầu, chúng ta cần tạo các chuỗi JSON tiêu đề và tải trọng. .
Tạo chuỗi tiêu đề và tải trọng Base64Url. .
Tạo chữ ký. .
Base64Url Mã hóa chữ ký. .
Tạo mã thông báo web JSON

Làm cách nào để sử dụng xác thực JWT với API web PHP?

JWT hoạt động như thế nào .
Máy khách gửi thông tin đăng nhập của nó đến máy chủ
Máy chủ tạo mã thông báo và gửi lại cho máy khách
Khách hàng đưa ra một yêu cầu mới bao gồm mã thông báo
Máy chủ xác minh mã thông báo và phản hồi tương ứng