JWT authentication Laravel là gì?

Framework Laravel mã nguồn mở hiện đang rất thu hút có hàng triệu người truy cập và sử dụng trên toàn thế giới. Nhu cầu để xác thực người dùng, hoặc bảo vệ Authentication API trong framework Laravel là rất lớn, vậy làm sao để thực hiện? Bài viết này  sẽ hướng dẫn người dùng sử dụng JWT authentication Laravel. Đây là một phương pháp khá hữu ích trong các ứng dụng web, đặc biệt là mobile app.

JWT authentication Laravel là gì?
JWT authentication Laravel là gì?

JWT authentication Laravel dùng để làm gì?

JWT authentication Laravel là cách viết ngắn gọn của việc sử dụng JWT (JSON Web Token) để bảo vệ cho Authentication API trong Laravel. 

Trong  Authentication API, Client giao tiếp và gửi request (yêu cầu) đến Server thông qua URL trên HTTP. Nếu chúng ta dùng phương thức nào để bảo mật Authentication API thì tất cả các User khác có thể truy cập Request này để lấy thông tin hoặc xoá Client. Và Server sẽ thực hiện yêu cầu mà không cần biết có phải là của Client hay không. 

Điều này rất nguy hiểm. Các hacker có thể xóa hết dữ liệu hoặc đánh cắp thông tin người dùng. Vì vậy, cần một phương pháp để Server xác định được yêu cầu đó là của Client thì Server mới thực hiện. Hiện nay, JWT là một trong những lựa chọn phổ biến nhất.

Thông tin chung về JWT

Dưới đây chúng tôi sẽ cung cấp một số thông tin cần biết về JWT. 

JWT là gì?

JSON Web Token (JWT) là một tiêu chuẩn mở (RFC7519). Chúng định nghĩa một cách nhỏ gọn và khép kín để truyền thông tin an toàn giữa các bên dưới dạng đối tượng JSON. 
Những thông tin này được xác minh và đáng tin cậy vì nó được ký điện tử. JWT có thể được ký bằng cách sử dụng bí mật (với thuật toán HMAC) hoặc cặp khóa public/private bằng RSA hoặc ECDSA.

Cấu trúc của một JWT như thế nào?

Mỗi một JSON Web Token gồm có 3 phần là Header, Payload, Signature. Những phần này được ngăn cách bởi dấu “.” (dot).

Header

Header là đoạn đầu tiên, nó bao gồm 2 thành phần chính là:

  • alg: Thuật toán sử dụng để mã hoá, như là HMAC SHA256 hoặc RSA.
  • typ: Loại token. Mặc định là JWT.

Payload

Phần thứ hai của JWT (JSON Web Token) là payload, nó chứa các thông tin. Các thông tin này là các entity (thường là user) và dữ liệu bổ sung. Có ba loại thông tin: registered, public, and private.

  • Registered: Đây là một tập hợp các thông tin được xác định trước, không bắt buộc nhưng được khuyến nghị. Dùng để cung cấp một tập hợp các xác nhận quyền sở hữu hữu ích, có thể tương tác. Tiêu biểu là: Iss (nhà phát hành), exp (thời gian hết hạn), sub (chủ đề), aud (khán giả)...
  • Public: Public có thể được xác định theo ý muốn bởi những người dùng JWT. Nhưng để tránh ảnh hưởng, trùng lặp chúng nên được xác định trong IANA JSON Web Token Registry. Hoặc được định nghĩa là một URL có chứa namespace không bị trùng lặp.
  • Private: Đây là thông tin tự định nghĩa, được tạo ra để chia sẻ thông tin giữa các bên đồng ý sử dụng chúng.

Signature

Để tạo phần chữ ký, chúng ta cần có Header, Payload đã được mã hoá và 1 chuỗi secret.

Sử dụng JWT khi nào?

  • Authorization:

Đây là tình huống phổ biến nhất để sử dụng JWT. Khi người dùng đã đăng nhập, mỗi request tiếp theo sẽ bao gồm JWT. Điều này cho phép người dùng truy cập các tài nguyên được phép với JWT đó. 

Single Sign On là một tính năng được JSON Web Token sử dụng rộng rãi hiện nay. Chúng có chi phí tiết kiệm và khả năng dễ dàng sử dụng trên các miền khác nhau.

  • Information Exchange:

JWT là một cách tốt để truyền thông tin giữa các bên một cách an toàn. Bởi vì JWT có thể được ký. Ví dụ: sử dụng cặp khóa public/private để chắc chắn rằng đúng người đúng việc. 

Ngoài ra, vì chữ ký được tính bằng cách sử dụng Header và Payload, bạn cũng có thể xác minh rằng nội dung không bị giả mạo.

JSON Web Tokens hoạt động như thế nào?

Trong xác thực, khi người dùng đăng nhập thành công bằng thông tin đăng nhập của họ, JWT sẽ được trả về. Vì Token là thông tin xác thực người dùng nên cần phải hết sức cẩn thận để ngăn chặn các vấn đề bảo mật. Nói chung, bạn không nên giữ mã thông báo lâu hơn yêu cầu.

Bất cứ khi nào người dùng muốn truy cập tài nguyên được bảo vệ, user agent phải gửi JWT. Thường là trong Header Authorization bằng cách sử dụng schema Bearer.

Nếu tokens được gửi trong Authorization header, Cross-Origin Resource Sharing (CORS) sẽ không thành vấn đề vì nó không sử dụng cookie.

Cách JWT được lấy và sử dụng để truy cập các API hoặc tài nguyên qua 3 bước dưới đây:

  • Ứng dụng hoặc client gửi yêu cầu ủy quyền đến máy chủ.
  • Khi ủy quyền được cấp, máy chủ sẽ trả về một mã thông báo truy cập cho Ứng dụng.
  • Ứng dụng sử dụng mã thông báo truy cập để truy cập các tài nguyên được bảo vệ (như API).

Authentication là gì?

Ở phần dưới đây, chúng ta sẽ tìm hiểu qua về Authentication nhé!

Định nghĩa Authentication

Authentication (tạm dịch là xác thực) là một quá trình kiểm tra danh tính của một tài khoản đi vào hệ thống hiện tại thông qua một hệ thống xác thực. Đây được coi là bước khởi đầu của bất kỳ hệ thống dựa trên người dùng nào.

Theo Wikipedia, định nghĩa của Authentication được hiểu là:

Một hành động thiết lập hoặc xác thực một cái gì đó đáng tin cậy. Có nghĩa là, những tuyên bố của người đó hoặc sự việc là hoàn toàn đúng sự thật.
Một số ví dụ để bạn hiểu định nghĩa Authentication là:

  • Máy chủ sẽ xác thực các yêu cầu do máy khách của người dùng gửi chính xác hay không bằng Authentication.
  • Máy chủ sẽ xác thực nội dung yêu cầu do người dùng A gửi đúng hay không cũng là Authentication.
  • Bản chất của Authentication là bạn sẽ xác nhận yêu cầu HTTP được gửi từ ai đó.

Sử dụng Authentication trong Laravel 

JWT authentication Laravel xây dựng giúp cho việc thực hiện xác thực vô cùng đơn giản. Bạn sẽ không ngờ được là Laravel đã xây dựng sẵn Authentication. Chúng ta chỉ việc sử dụng và tùy chỉnh theo chúng ta muốn mà thôi. Nào chúng ta hãy bắt tay đi tìm hiểu nhé!

Hệ thống xác thực người dùng Authentication của Laravel được xây dựng dựa trên 2 thành phần cốt lõi. Đó là guard và provider.

Guards

Guard hiểu như là một cách cung cấp logic được dùng để xác thực người dùng. Trong Laravel, người dùng thường chọn  session guard/ token guard. 

  • Session guard duy trì trạng thái người dùng trong mỗi yêu cầu bằng cookie. 
  • Token guard xác thực người dùng bằng cách kiểm tra mã thông báo có hợp lệ theo từng yêu cầu.

Vì vậy, như bạn có thể thấy, guard xác định logic của việc xác thực. Chúng không cần thiết phải luôn xác thực bằng cách lấy thông tin xác thực hợp lệ từ back-end. Bạn có thể triển khai một biện pháp bảo vệ đơn giản như kiểm tra sự hiện diện của một phần thông tin cụ thể trong yêu cầu và xác thực người dùng dựa trên đó.

Providers

Nếu Guards hỗ trợ xác định logic để xác thực thì providers sẽ truy xuất dữ liệu người dùng từ back-end. Việc thực hiện truy xuất người dùng sẽ do các nhà cung cấp thực hiện. Laravel hỗ trợ người dùng truy cập bằng cách sử dụng Eloquent và Query Builder vào cơ sở dữ liệu.

Lưu ý khi đăng ký tài khoản với hệ thống chợ mật khẩu tối thiểu 60 ký tự và tối đa 255 ký tự. Chúng tôi cũng có thể thay đổi trường remember_tokennullable() khi di chuyển bảng người dùng. 

Một quá trình Authentication trong Laravel

Mỗi một quá trình Authentication sẽ bao gồm 3 phần là: 

  • Phát sinh các dấu hiệu:

Đây là lúc quyết định nên lựa chọn và sử dụng dấu hiệu gì và dùng cách nào để tạo ra dấu hiệu đó. 

Mỗi một quá trình Authentication sẽ có sự xuất hiện của nhiều dấu hiệu như: password/username, user token, api key,.. Mỗi một dấu hiệu này đều sẽ có cách tạo ra khác nhau bởi quy ước sử dụng khác biệt. 

  • Lưu trữ cho các dấu hiệu:

Đây là một trong những bước quyết định xem bạn nên lưu trữ dấu hiệu này ở đâu. Bạn nên lưu ở cả client và server hay thông qua vị trí nào của bản tin HTTP. 

  • Kiểm tra các dấu hiệu:

Đây là điều mà ứng dụng của chúng ta để kiểm tra lại các tích hợp lệ của dấu hiệu, từ đó đối chiếu xem lại các dấu hiệu này của của người dùng nào,… 

Kết luận

Bài viết trên, GrowUpWork đã cung cấp một số thông tin để giải thích JWT authentication Laravel là gì. Hy vọng rằng bài viết này sẽ giải đáp thắc mắc của người đọc và mang đến những thông tin hữu ích. 


Tin tức liên quan

Phân biệt các loại hình làm việc từ xa: Hybrid, Remote, Onsite và work from home

Kiến thức kỹ thuật| 2024-01-03
Các loại hình làm việc từ xa ngày càng phát triển. Trong tương lai gần nó sẽ trở thành xu thế của xã hội. Hãy tìm hiểu rõ hơn về những hình thức làm việc từ xa này và ưu - nhược điểm của nó.

IT onsite là gì? Một số kỹ năng và lưu ý khi nhận làm việc onsite

Kiến thức kỹ thuật| 2024-01-03
IT onsite là gì? Cần có kỹ năng gì để tham gia làm OnSite? Hãy tham khảo thông tin chi tiết sau từ chuyên gia và bạn sẽ có thể trở thành một IT ONSITE chuyên nghiệp.

Việc làm phù hợp và phổ biến cho thế hệ GenZ

Kiến thức kỹ thuật| 2024-01-03
Bạn là người trong thế hệ GenZ? Bạn đang thắc mắc không biết nên lựa chọn công việc gì? Bạn không biết làm sao để tìm được một công việc tốt? Hãy theo dõi những việc làm GenZ phổ biến sau và bạn sẽ có câu trả lời chính xác nhất.

Gợi ý 5 chế độ phúc lợi hấp dẫn và thu hút nhân tài tốt nhất mà doanh nghiệp nên thực hiện ngay

Kiến thức kỹ thuật| 2024-01-03
Bất kỳ doanh nghiệp nào muốn thu hút và giữ chân nhân tài thì chế độ phúc lợi cần phải được đảm bảo. Trong đó 5 phúc lợi sau đây được đánh giá là tối ưu và tạo nhiều ấn tượng với ứng viên nhất.


Việc tạo CV đúng chuẩn giúp gia tăng cơ hội trúng tuyển của bạn ít nhất 20%. Hãy nhanh tay tạo CV Rirekisho chuẩn Nhật hoặc CV chuẩn tiếng Anh theo các mẫu chuyên nghiệp nhất của GrowUpWork chúng tôi dưới đây nhé!