Xác thực REST API với JWT - JSON Web Token Chuyên mục PHP và Laravel 2023-04-03 599 Lượt xem 18 Lượt thích 0 Bình luận
Chắc hẳn các bạn cũng đã biết JWT (Json web token) ngày nay được sử dụng khá rộng rãi và phố biến khi chúng ta kết hợp với REST API đúng không ? Vậy để hiểu rõ hơn về nó thì bây giờ chúng ta cùng nhau đi tìm hiểu nó là cái gì và sử dụng như thế nào nhé !
Để mà hiểu hơn về JWT thì các bạn nên hiểu qua một chút về REST API trước nhé !
Restful api là gì?
REST (REpresentational State Transfer) được đưa ra vào năm 2000, trong luận văn tiến sĩ của Roy Thomas Fielding (đồng sáng lập giao thức HTTP). Nó là một dạng chuyển đổi cấu trúc dữ liệu, là một phong cách kiến trúc cho việc thiết kế các ứng dụng có kết nối. Nó sử dụng HTTP đơn giản để tạo cho giao tiếp giữa các máy. Vì vậy, thay vì sử dụng một URL cho việc xử lý một số thông tin người dùng, REST gửi một yêu cầu HTTP như GET, POST, DELETE, vv đến một URL để xử lý dữ liệu.
JWT là gì?
JSON Web Mã (JWT) là một chuẩn mở (RFC 7519) định nghĩa một cách nhỏ gọn và khép kín để truyền một cách an toàn thông tin giữa các bên dưới dạng đối tượng JSON. Thông tin này có thể được xác minh và đáng tin cậy vì nó có chứa chữ ký số. JWTs có thể được ký bằng một thuật toán bí mật (với thuật toán HMAC) hoặc một public / private key sử dụng mã hoá RSA. Ví dụ
Ví dụ :
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEzODY4OTkxMzEsImlzcyI6ImppcmE6MTU0ODk1OTUiLCJxc2giOiI4MDYzZmY0Y2ExZTQxZGY3YmM5MGM4YWI
Tại sao lại xác thực REST API (PHP , Nodejs..) với JWT?
Đây là một câu hỏi quan trọng giúp các bạn hiểu thêm về security trong việc phát triển một restful api. Tất nhiên đây chỉ là một phần security trong rất rất nhiều phần security còn lại.
Ví dụ: Bạn có một link rest api: https://domain.com/post/getAll Nhìn sơ qua các bạn cũng thấy nhiệm vụ của nó là gì? Đó chính là lấy tất cả các user hiện có trong collection users. Nếu như link này bất cứ ai cũng có thể truy cập được và lấy nó thì hậu quả như thế nào? Cho nên mới có việc xác thực một ai đó được cấp quyền mới lấy được những user đó. Vậy cho nên chúng ta mới sử dụng JSON Web Token để giải quyết vấn đề đó.
Quy trình việc xác thực JWT và restful
5 steps giúp chúng ta hiểu nhanh hơn :
- Client gửi passWord, nameUser tới server nhằm để xác thực việc đăng nhập
- Nếu login thành công back-end sẽ tạo ra một generate a random String dạng json web token gửi về cho client.
- Client nhận token đó, rồi lưu trữ ở đâu đó (cookies, storageSession..)
- Khi client muốn get data gì đó thì luôn gửi kèm token này lên cùng với http request.
- Server nhận được http request từ client thì check token này available hay không? Rồi cho đi tiếp, còn không chặn lại, và có thể report ip này.
Build một resful api với JWT(JSON Web Token)
Phần này tùy thuộc vào ngôn ngữ mà các bạn sử dụng nhé ! Nếu bạn nào cũng là một tín đồ của PHP và Laravel giống mình thì các bạn có thể tham khảo link dưới để tự build cho mình một JWT nha:
https://jwt-auth.readthedocs.io/en/develop/
Kết luận
Bài này giúp các bạn nhìn rõ hơn việc xác thực bảo mật trong restful quan trọng như thế nào? Chú ý rằng đây không phải là cách duy nhất trong việc bảo mật, nhưng cũng là một cách an toàn và dễ dàng đối với bất cứ mộ developer nào. Thank you
Bình luận (0)