Jwt là gì? Cách thức hoạt động và lợi ích mà Jwt mang lại

Thủy Nguyễn 30/08/2021

Bất kỳ người dùng nào khi tạo và đăng nhập tài khoản trên các ứng dụng web, desktop hay di động đều phải tiến hành xác thực người dùng để có thể sử dụng được các tính năng có trong ứng dụng đó. Nhưng làm thế nào để xác thực người dùng? JWT chính là câu trả lời cho bạn.

Vậy cụ thể, JWT là gì? Cách thức hoạt động và lợi ích mà JWT mang lại cho doanh nghiệp ra sao? Bài viết sau, các chuyên gia Bizfly sẽ trình bày về vấn đề này.

Jwt là gì?

JWT hay JSON Web Token là một phương tiện đại diện cho các bên yêu cầu chuyển giao giữa server (máy chủ) và client (máy khách). Và với mục đích xác minh các thông tin an toàn dưới dạng JSON object.

Jwt là gì

Khái niệm Jwt là gì? 

Các chuỗi thông tin dạng JSON sẽ tiến hành mã hoá để trở thành một chuỗi ký tự lộn xộn, không có trật tự nhất định và rất khó hiểu khi nhìn vào. Các thông tin này đều đáng tin cậy bởi nó được ký digitally signed bằng cặp public key dùng chuẩn RSA hoặc secret với thuật toán HMAC hoặc ECDSA. 

Các thành phần của Jwt 

Để hiểu một cách rõ ràng về JWT thì việc tìm hiểu về các thành phần của nó là điều vô cùng cần thiết.

Các thành phần của Jwt

Các thành phần của Jwt 

  • Header: Chứa các thuật toán và các dữ liệu quan trọng, mục đích Header được sử dụng chính là để mã hoá ra chuỗi JWT. Header bao gồm Typ và ALG. Trong đó:
  • Typ (type): Là một loại Token được mặc định là JWT.
  • ALG (algorithm): Là một thuật toán được dùng để mã hoá.
  • Payload: Chứa các nội dung, thông tin mà người dùng muốn đặt trong chuỗi. Đây có thể là các thông tin bổ sung cho phần header hoặc cũng có thể là các thông tin mô tả một thực thể nhất định. Payload bao gồm 3 loại thông tin chính là:
  • Registered (đã đăng ký): Đây là những thông tin được quy định sẵn trong IANA JWT Claims registry. Các thông tin này tuy không bắt buộc nhưng nếu chúng là những thông tin cần thiết thì sẽ được áp đặt trong các điều kiện bắt buộc phụ thuộc vào các ứng dụng thực hiện.
  • Public (công khai): Thông tin này sẽ được quy định trong một URL không trùng lặp hoặc IANA JWT Claims registry để tránh các khả năng trùng lặp xảy ra và tuỳ theo mong muốn của người dùng JWT.
  • Private (riêng tư): Phần thông tin được thêm vào này được sử dụng với mục đích truyền tải qua lại giữa các máy khách client.
  • Signature: Bằng cách mã hóa Header và Payload cùng với một chuỗi secret được kèm theo sẽ giúp tạo ra được phần Signature (phần chữ ký).

Khi 3 thành phần Header, Payload và Signature được kết hợp lại sẽ tạo ra một chuỗi JWT hoàn chỉnh nhất.

Xem thêm: Bảo mật website: Các cách bảo vệ trang web hiệu quả, tối ưu

Cách thức hoạt động của Jwt 

Khi người dùng đăng nhập và xác thực thành công tài khoản của họ, JWT sẽ được trả về. Tuy nhiên, bạn cần phải hết sức cẩn thận trong việc ngăn chặn các vấn đề về bảo mật và không nên giữ token quá lâu bởi token là thông tin xác thực.

Bên cạnh đó, bạn cũng không nên lưu trữ các thông tin quan trọng hay dữ liệu nhạy cảm trên JWT tại bộ nhớ trình duyệt bởi nó không thể đảm bảo khả năng bảo mật.

Cách thức hoạt động của Jwt

Cách thức hoạt động của Jwt 

Khi người dùng muốn bảo vệ resource hoặc truy cập route thì người dùng cần thêm Authorization trong Header. Máy chủ server mỗi khi nhận được request sẽ tiến hành kiểm tra tính hợp lệ của JWT. Chỉ khi đó, người dùng mới có thể truy cập vào route và thực hiện việc bảo vệ resource.

Nếu JWT chứa những dữ liệu cần thiết thì các hoạt động nhất định khi có nhu cầu truy vấn có thể bị giảm đi.

Lợi ích mà Jwt mang lại là gì? 

Hầu hết mọi người dùng khi xác thực người dùng đều sử dụng JWT bởi những lợi ích mà nó có thể mang lại như sau.

Bảo mật 

Khi cần thực hiện việc bảo mật một thông tin bất kỳ thì JWT chính là sự lựa chọn tốt nhất. Việc chứa thêm mã JWT để xác nhận quyền truy cập khi người dùng đăng nhập hệ thống sẽ giúp họ có thể truy cập được vào resource, url và server một cách an toàn.

Bảo mật thông tin

Bảo mật thông tin

Để tránh việc JWT bị kẻ tấn công đánh cắp và sử dụng, các mã JWT sẽ có thời hạn sử dụng rất ngắn. Tuy nhiên, bạn vẫn nên cẩn thận và phải đảm bảo rằng JWT của mình không bị lộ ra ngoài hoặc bị đánh cắp.

Bên cạnh đó, bạn không nên thực hiện lưu trữ các thông tin quan trọng trên JWT.

Truyền đạt thông tin 

JWT là một phương thức khá tốt để đảm bảo an toàn khi thực hiện việc truyền đạt hay trao đổi thông tin giữa các thành viên dựa trên signature của JWT. Thông qua signature, người nhận tin có thể dễ dàng biết được ai là người gửi tin đến cho mình.

Và phần chữ ký này sẽ được đảm bảo tính chính xác bởi nó được tạo ra từ Header và Payload.

Xem ngay: Tổng hợp các lỗi bảo mật website thường gặp nhất và cách khắc phục

Ưu điểm của Jwt 

Sau đây Bizfly sẽ đưa ra một vài ưu điểm của Jwt mà bạn nên biết.

Ưu điểm của Jwt

Ưu điểm của Jwt 

  • Nhỏ gọn: Khi thực hiện chuyển đổi trong môi trường HTTP và HTML, JWT luôn là một sự lựa chọn được ưu tiên hàng đầu bởi các mã JWT nhỏ hơn rất nhiều so với mã thông báo SAML. Lý do là bởi vì so với XML thì JSON ngắn gọn hơn rất nhiều.
  • Phổ biến: Bộ phân tích cú pháp JSON được sử dụng phổ biến trong hầu hết tất cả các ngôn ngữ lập trình bởi chúng có thể tạo ra bản đồ trực tiếp hướng đến các đối tượng và giúp quá trình làm việc được diễn ra dễ dàng hơn.
  • Dễ xử lý: Được sử dụng phổ biến trên nhiều nền tảng internet, JWT sẽ được xử lý một cách dễ dàng trên mọi thiết bị của người dùng miễn là các thiết bị đó được kết nối với mạng internet nhất là các thiết bị di động.
  • An toàn: JWT có thể thực hiện ký một cách bí mật bằng cách sử dụng cặp khóa public/private dưới dạng chứng chỉ X.509 và thuật toán HMAC. Tương tự JWT, mã SAML cũng sử dụng cặp khóa này nhưng nó có thể khiến thông tin bị đánh cắp do việc ký XML sẽ tạo ra các lỗ hổng bảo mật.

Bài viết sơ lược mà Bizfly chia sẻ trên đây đã giúp bạn có thể hiểu một cách cụ thể và rõ ràng nhất JWT là gì cũng như các thông tin quan trọng khác có liên quan như các thành phần, lợi ích hay ưu điểm. Qua bài viết hữu ích này, bạn đã có thêm được những thông tin, kiến thức mới thuộc lĩnh vực này.

Nhận ngay tin tức mới nhất từ Bizffly

Nhận ngay tin tức mới nhất từ Bizffly