Hướng dẫn rest-api token-based-authentication example php github - ví dụ xác thực dựa trên mã thông báo rest-api php github

Api api auth jwt ví dụ

Được thực hiện bằng cách làm theo hướng dẫn: https://www.codeofaninja.com/2018/09/rest-api-authentication- example-php-jwt-tutorial.html

Đầu tiên tạo người dùng trong cơ sở dữ liệu "API_DB"

CREATE TABLE users (
	id int NOT NULL AUTO_INCREMENT, 
	firstname varchar(255) NOT NULL,
	lastname varchar(255) NOT NULL, 
	email varchar(255) NOT NULL, 
	password varchar(255) NOT NULL, 
	created datetime  DEFAULT CURRENT_TIMESTAMP NOT NULL, 
	modified timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL,
	PRIMARY KEY (id)
);

Bắt đầu máy chủ PHP trong root dự án

Tạo người dùng

http://localhost:8080/api/create_user.php

Với dữ liệu cơ thể yêu cầu

{
	"firstname" : "Toni",
	"lastname" : "Ilic",
	"email" : "",
	"password" : "555"
}

Đăng nhập người dùng

http://localhost:8080/api/login.php

Nhập vào cơ thể

{
"email" : "",
"password" : "555"
}

Kiểm tra truy cập mã thông báo

http://localhost:8080/api/validate_token.php

Nhập vào cơ thể yêu cầu

{
"jwt": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9sb2NhbGhvc3Q6ODA4MFwvIiwiYXVkIjoiaHR0cDpcL1wvbG9jYWxob3N0OjgwODBcLyIsImlhdCI6MTM1Njk5OTUyNCwibmJmIjoxMzU3MDAwMDAwLCJkYXRhIjp7ImlkIjoiMiIsImZpcnN0bmFtZSI6Ik1pa2UiLCJsYXN0bmFtZSI6IkRhbGlzYXkiLCJlbWFpbCI6Im1pa2VAY29kZW9mYW5pbmphLmNvbSJ9fQ.nyMRPlg0MSI_8xevui3aeW9suDHjBA6PWk05igYT_OY"
}

Cập nhật người dùng

http://localhost:8080/api/update_user.php

Cơ thể có các chi tiết sau

{
    "firstname" : "Toni",
    "lastname" : "Ilic",
    "email" : "",
    "password" : "555",
	"jwt": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9sb2NhbGhvc3Q6ODA4MFwvIiwiYXVkIjoiaHR0cDpcL1wvbG9jYWxob3N0OjgwODBcLyIsImlhdCI6MTM1Njk5OTUyNCwibmJmIjoxMzU3MDAwMDAwLCJkYXRhIjp7ImlkIjoiMiIsImZpcnN0bmFtZSI6Ik1pa2UiLCJsYXN0bmFtZSI6IkRhbGlzYXkiLCJlbWFpbCI6Im1pa2VAY29kZW9mYW5pbmphLmNvbSJ9fQ.nyMRPlg0MSI_8xevui3aeW9suDHjBA6PWk05igYT_OY"
}					

API REST dịch vụ web PHP

Một API nhỏ và đơn giản API w/ "cơ bản" và "mã thông báo" dựa trên ủy quyền HTTP.

Phụ thuộc

Hãy chắc chắn đọc các tài liệu của các phụ thuộc dự án sau đây.

Git »rõ ràng

PHP-JWT »trên GitHub Một thư viện đơn giản để mã hóa và giải mã mã thông báo JSON Web (JWT)
A simple library to encode and decode JSON Web Tokens (JWT)

Mysqlidb »trên github đơn giản MySQli trình bao bọc và bản đồ đối tượng với các câu lệnh đã chuẩn bị.
Simple MySQLi wrapper and object mapper with prepared statements.

Swift Mailer »Trang chủ Một giải pháp gửi thư dựa trên thành phần cho Php 7> =.
A component based mailing solution for PHP 7 >= .

Quản lý nhóm và người dùng

Có ba loại nhóm khác nhau:

  • Quản trị viên
  • Biên tập viên
  • Người dùng

Quyền thực hiện các phương thức trên các nhóm và người dùng được cố định theo thứ bậc trong hệ thống. Quyền thực hiện các phương thức từ các dịch vụ tùy chỉnh được chỉ định riêng trên hồ sơ nhóm (hoặc hồ sơ người dùng).
The rights to perform methods from custom services are specified separately on group records (or user records).

"Quản trị viên" có quyền thực hiện bất kỳ phương thức được cung cấp nào của các dịch vụ khác nhau.

"Biên tập viên" có thể chỉnh sửa tài khoản người dùng của riêng họ và có thể chỉnh sửa và tạo các nhóm mới với loại "người dùng" và thêm người dùng như vậy. Họ cũng có thể chỉ định các quyền cho các nhóm "người dùng" và ghi đè quyền nhóm trên hồ sơ người dùng.

"Người dùng" có thể chỉnh sửa tài khoản người dùng của riêng họ và thực hiện các phương thức trên các bộ điều khiển tùy chỉnh theo chỉ định cho nhóm người dùng của họ (hoặc khi ghi đè lên các phương thức đó được gắn vào hồ sơ người dùng của họ).

Kết hợp tên/mật khẩu ban đầu khi thiết lập được sử dụng từ demouser.php
when setup used from demouser.php

Nhóm: Quản trị viên Tên: Quản trị Mật khẩu: AdminPassword99
Name: admin
Password: adminPassword99

Nhóm: Biên tập Tên: Biên tập Mật khẩu: EditorPassword99
Name: editor
Password: editorPassword99

Nhóm: Tên người dùng: Mật khẩu người dùng: userpassword99
Name: user
Password: userPassword99

Thành lập

  • Chạy composer install trong thư mục: Ứng dụng
  • Chạy máy chủ web Apache cục bộ (php> = 5.5 khuyến nghị.> = 7.x, mysql> = 5, mod_rewrite) trỏ nó là root vào thư mục này: public/api
  • Tạo cơ sở dữ liệu và thực hiện SQL: Cơ sở dữ liệu.SQL sau đây
  • Bạn cũng có thể chạy một container Docker, đảm bảo chỉnh sửa thông số kỹ thuật Docker cho phù hợp: Docker-compose.yml
  • Đối với mục đích demo thực hiện SQL sau: Demodata.sql
  • Sao chép tệp PHP sau vào Rooterver của bạn và mở nó trong trình duyệt: demouser.php
  • Chỉnh sửa tệp cơ sở dữ liệu cho thông tin xác thực cơ sở dữ liệu: cơ sở dữ liệu.php
  • Chỉnh sửa tệp cấu hình cho các cài đặt khác: config.php
  • Mở công cụ kiểm tra API của bạn và bắt đầu yêu cầu của bạn - được đề xuất: Người đưa thư
  • Đừng quên sử dụng các tiêu đề ủy quyền HTTP "cơ bản"
  • hoặc sử dụng "Token Auth
  • Các tiêu đề HTTP khác

Chạy đầu tiên

Bắt đầu nhận được yêu cầu nhận được http: // localhost cho một danh sách các dịch vụ có sẵn. Trong sản xuất luôn luôn sử dụng SSL!
In production always use SSL!

Nồng độ API đề xuất

Chúng tôi khuyên bạn nên sử dụng API trên một tên miền phụ tách khỏi ứng dụng Frontend/Backend của bạn. Giống như http: //api.localhost cho API và http của bạn: //www.localhost cho ứng dụng của bạn.

Đối với kịch bản đó, hãy đặt miền của ứng dụng frontend/phụ trợ của bạn

  • Đặt thư mục gốc API Subdomain thành công khai/API
  • Đặt thư mục gốc ứng dụng thành công khai
  • và đặt
    http://localhost:8080/api/create_user.php
    
    0 trong tệp config.php của bạn, để các tệp tĩnh có thể (hình ảnh, video, v.v.) sẽ được tham chiếu đến máy chủ đó.

Trong trường hợp bạn chạy cả API và Frontend/Backend trên cùng một miền, hãy đảm bảo

  • Đặt thư mục gốc ra công khai
  • và đặt
    http://localhost:8080/api/create_user.php
    
    1 trong tệp config.php của bạn.

Sử dụng & mở rộng

Dữ liệu nhóm và người dùng có thể dễ dàng được mở rộng bởi các trường tùy chỉnh. Bạn cũng có thể thêm bộ điều khiển tùy chỉnh của mình để thêm các dịch vụ tiếp theo vào API của bạn. Kiểm tra cách ở đây: sử dụng.mdnote: Mở rộng chưa được cập nhật an toàn :(
You can also add your custom controllers for adding further services to your API.
Check out how here: USAGE.md
Note: Extending is not yet update-safe :(

Đọc tốt

  • http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api
  • http://restful-api-design.readthedocs.io/en/latest/
  • http://www.restapitutorial.com/
  • https://github.com/marmelab/awesome-rest

Làm thế nào xác thực dựa trên mã thông báo hoạt động trong API REST?

Người dùng API REST có thể xác thực bằng cách cung cấp ID người dùng và mật khẩu cho tài nguyên đăng nhập API REST bằng phương thức Post HTTP. Mã thông báo LTPA được tạo cho phép người dùng xác thực các yêu cầu trong tương lai. Mã thông báo LTPA này có tiền tố LTPAToken2.. An LTPA token is generated that enables the user to authenticate future requests. This LTPA token has the prefix LtpaToken2 .

Làm cách nào để nhận mã thông báo xác thực cho API REST?

Nhận mã thông báo..
Truy cập https: /// comgpsgate/api/v. 1/Kiểm tra URL máy chủ của bạn ở đâu. ....
Chuyển đến phần Tài nguyên mã thông báo và bấm vào để mở rộng nó ..
Nhập ApplicationID, tên người dùng và mật khẩu và nhấp vào thực thi. ....
Sao chép/Lưu khóa ủy quyền này để sử dụng sau ..

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

Procedure..
Đảm bảo rằng xác thực JWT được bật cho API REST bằng cách đặt giá trị của servlet.JWT.Auth.....
Yêu cầu HTTP đến cho cuộc gọi API REST phải chứa tiêu đề yêu cầu ủy quyền, với sơ đồ, người mang theo kế hoạch, theo sau là JWT.Chữ ký của mã thông báo và ngày hết hạn được xác minh bởi hệ thống ..

Mã thông báo JWT trong PHP là gì?

JSON Web Token (JWT) là một cách an toàn để xác thực người dùng trên một ứng dụng web.Sử dụng JWT, bạn có thể chuyển một cách an toàn dữ liệu và thông tin được mã hóa giữa máy khách và máy chủ.Tìm hiểu thêm về sự khác biệt giữa các phiên và JWT ở đây.JWT cung cấp nhiều lợi ích.a safe way to authenticate users on a web app. Using JWT, you can securely transfer encrypted data and information between a client computer and a server. Learn more about the differences between sessions and JWTs here. JWT offers many benefits.