Home Kiến thức JWT là gì và lợi ích của nó

JWT là gì và lợi ích của nó

7 min read
0
239

JWT là gì

JWT là một token, nhưng khác với các token bình thường (hay dùng để xác thực . . . ) nó lưu trữ nhiều thông tin hơn như user_id, email, họ tên hoặc thông tin đơn hàng trong một số shopping cart.

Theo chuẩn, một JWT token sẽ có 3 phần là

  1. Header: thường dùng chứa thuật toán đang dùng
  2. Payload: chứa data cần xử lý
  3. Signature: chữ ký (mã công khai)

Các thông tin này được mã hóa bằng RSA thành chuổi JWT nên không thể giải mã hoặc hack để thay đổi kết quả được. Nhờ vậy việc truyền data từ client đến server được bảo mật hoàn toàn.

Lợi ích của JWT

Một trong các tác dụng của JWT là xác thực, vậy có bao giờ bạn tự hỏi tại sao không dùng session cho tiện. Session là công cụ tuyệt với mà dev nào cũng cần phải biết, việc sử dụng lại rất đơn gian. Ngoài ra session được lưu ở server nên bảo mật tuyệt đối.

Vậy JWT sinh ra để làm gì, thực ra có 3 nguyên nhân

  1. Nếu bạn dùng mobile app kết nối đến server thông qua API, mà mobile app thì không thể dùng session (trừ khi viết hyrid app). Khi đó, JWT là cách duy nhất để xác thực . Khi user login bằng user/password và thành công, server sẽ tạo 1 JWT và gửi cho client. Từ đó trở đi client khi cần trao đổi gì với server chỉ cần đính kèm token này vào bằng chứng cho việc mình đã login thành công. Và data gửi đến server là chính chủ
  2. Nguyên nhân tứ hai: hiện nay mô mình micro-service ngày càng phát triển, các service này hoạt động độc lập với nhau và có thể nằm ở server khác nhau. Do đó, khi bạn login có thể ở một server này, nhưng lần gửi/nhận thông tin tiếp theo có thể là 1 server khác. Vậy làm sao server khác đó biết data bạn gửi là chính chủ hay không, việc này có thể giải quyết bằng nhiều cách nhưng dùng JWT là cách nhanh nhất.
  3. Nguyên nhân cuối cùng: lưu lượng trao đổi thông tin ngày càng nhiều, nếu thông tin lưu ở session trên server , mà sesion  thực chất là lưu ở database/file nào đó trên server để truy xuất, dẫn đến một số trường hợp sẽ gây chậm hệ thống. Nếu làm việc với một số framework như laravel bạn sẽ thấy folder sesion là nơi lưu các sesion đó, mà lưu trên file thì truy xuất khó nhanh được nếu số lượng đủ lớn. Việc đẩy hết thông tin vào JWT khiến việc đơn giản hơn, khi nó nhận được gói tin chỉ cần giải mã là xong.

 

Do đó, việc dùng JWT ngày càng phổ biến, nếu là một dev bạn cần nắm các thông tin này

Load More Related Articles
Load More By quangvu
Load More In Kiến thức

Check Also

Tự làm web chatGPT đơn giản cho phép dùng nhiều OpenAI key

Trong thời đại công nghệ phát triển như hiện nay, chatbot đang dần trở thành một giải pháp…