JWT là gì? Toàn tập về JWT từ cơ bản tới chi tiết

Nâng cao độ bảo mật cho trang net, ứng dụng hay bất cứ 1 dịch vụ kỹ thuật thông tin nào cũng là ưu tiên hàng đầu của những nhà phát triển thành. Trong thời kì sắp đây, JWT nổi lên như 1 hình thức bảo mật phải chăng – miễn phí tổn ở mức “đỉnh của đỉnh” dành cho những nhà phát triển thành. Vậy, JWT là gì? Cấu tạo của JWT ra sao? Vì sao và lúc nào nên dùng JWT?

Tìm hiểu về JWT

JWT là gì?

JWT là viết tắt của JSON Net Tokens – 1 tiêu chuẩn mở RFC 7519, được dùng như 1 phương tiện đại diện bé gọn, để truyền đạt thông tin giữa server và shopper thông qua 1 chuỗi JSON.

Thông tin được truyền đi thông qua JWT sẽ được bảo mật và gia nâng cao độ tin tưởng nhờ vào chữ ký điện tử. Chữ ký điện tử dùng những khóa công khai/ riêng tư dùng RSA, ECDSA có thuật toán HMAC.

Nhà phát triển thành của JWT tuyên bố rằng, họ tập trung vào những signed token, những signed token này có thể xác minh tính toàn vẹn của quyền sở sở hữu của bản thân và bảo mật token khỏi những bên khác. Lúc signed token dùng cặp khóa công khai/ riêng tư, đồng nghĩa có việc bên nắm giữ cả 2 khóa là bên đã đăng ký signed token.

Bạn có thể tham khảo thêm thông tin về JSON Net Tokens tại trang net chính thức: JWT.io.

Xem Thêm  Defidollar (DFD) là gì? Toàn tập về tiền điện tử DFD

3 thành phần của JWT

1 JWT tiêu chuẩn bé gọn sẽ bao gồm 3 thành phần chính được phân tách có nhau bởi dấu chấm ( . ). Chúng là:

  • Header
  • Payload
  • Signature

1 phương pháp đơn giản, JWT sẽ có dạng như sau: xxxxx.yyyyy.zzzz.

Để hiểu hơn về JWT, chúng ta sẽ tìm hiểu chi tiết từng thành phần của JWT nhé!

Header của JWT

Header của JWT sẽ bao gồm 2 thành phần chính:

  • Thuật toán mã hóa được dùng. Dí dụ như: HS256, HS384, HS512, PS256, PS384, PS512, RS256, RS384, RS512, ES256, ES256K, ES384, ES512 và EdDSA.
  • Thành phần thứ 2 là JWT.

Dí dụ như sau:

{ “alg”: “HS256”, “typ”: “JWT” }

Trong ấy, bạn có thể thấy thuật toán mã hoá ở đây là HS256.

Payload của JWT

Payload là thành phần thứ 2 trong JWT chứa những thông tin về quyền sở hữu 1 thực thể và những dữ liệu bổ sung. Trong ấy, có 3 loại bảo mật xác thực bao gồm: registered, public và personal claims.

Dí dụ như:

Signature của JWT

Thành phần cuối cùng, cũng là 1 trong 3 thành phần quan yếu nhất của JWT: Signature – chữ ký. Để tạo được 1 chữ ký, bán sẽ cần cần mã hoá header, payload, mã khóa bí mật secret thuật toán dùng để mã hóa header và chữ ký ấy.

Dí dụ:

HMACSHA256( base64UrlEncode(header) + “.” + base64UrlEncode(payload), secret)

Signature được dùng để xác minh rằng tin nhắn được gửi tới ko bị thay đổi. Có trường hợp khách hàng dùng dùng personal key cho tokens signed, Signature cũng có thể xác nhận rằng người gửi là người tạo JWT.

Phối hợp mọi lại có nhau, ta sẽ có:

Kết quả đầu ra sẽ là dạng chuỗi trên tiêu chuẩn Base64-URL có thể dễ dàng truyền đi qua HTML và môi trường HTTP so có tiêu chuẩn XML trên SAML.

Sau lúc mã hoá, chúng ta sẽ có 1 chuỗi JWT như ở bên trái màn hình và bên cần sẽ là phần được giải mã.

JSON Net Tokens được dùng để làm cho gì?

Lúc nào nên dùng JWT?

Trong thực tế, JWT có thể ứng dụng trong siêu nhiều hoạt động khác nhau. 2 trường hợp điển hình có thể dùng JWT là:

  • Uỷ quyền – Authorization
  • Truyền đạt và bảo vệ toàn vẹn thông tin – Info Change
Xem Thêm  Rút gọn hyperlink là gì? High 6 trang internet rút gọn hyperlink miễn phí tổn phải chăng nhất hiện nay

Uỷ quyền – Authorization

Đây là trường hợp điển hình nhất để bạn có thể ứng dụng JWT vào đấy!

Lúc khách hàng đăng nhập thành công bằng thông tin của họ, ứng dụng có thể đề nghị truy cập vào những tài nguyên, dịch vụ,…. Mỗi lần thực hành, chúng sẽ cần phân phối 1 Entry Token dạng JWT. Lúc này, hình thức đăng nhập 1 lần SSO của bạn sẽ cần tới JWT bởi vì JWT có chi phí tổn định dạng bé và có thể dùng cùng lúc trên nhiều tên miền.

Truyền đạt và bảo vệ toàn vẹn thông tin – Info Change

JWT là 1 phương án tối ưu để truyền đạt và bảo vệ sự toàn vẹn của thông tin là vì:

  • JWT dùng cặp khóa công khai/ riêng tư – bạn có thể đánh giá, đối chứng rằng người gửi đúng như những gì họ nói.
  • Signature được tính toán bằng phương pháp dùng header và payload. Vì vậy, bạn cũng có thể xác thực được rằng nội dung ko bị nhái mạo.

JWT mang lại lợi ích gì?

Bé gọn hơn

JWT ngắn gọn hơn XML. Vì thế, lúc mã hóa, token JWT cũng sẽ ngắn hơn SAML. Điều này làm JWT trở nên 1 lựa chọn ưu thích hơn trong HTML và môi trường HTTP.

An toàn hơn

JWT dùng cặp khóa công khai/ riêng tư dưới dạng chứng chỉ X.509 để ký; JWT cũng có thể được ký đối xứng bằng 1 mã bí mật được chia sẻ dùng thuật toán HMAC.

SAML có thể dùng những cặp khóa công khai/ riêng tư như JWT. Tuy nhiên, chữ ký số bằng XML lại có nhiều lỗ hổng bảo mật siêu, phương pháp thực hành khó khăn hơn JWT siêu nhiều.

Phổ biến hơn

Bộ phân tách cú pháp JSON phổ biến hơn trong gần như những ngôn ngữ lập trình, vì chúng ánh xạ quản lý tới những đối tượng. Ngược lại, XML ko có ánh xạ tài liệu 1 phương pháp tự nhiên.

Xem Thêm  What's Coinlist? How lớn purchase Token Sale on Coinlist

Điều này dẫn tới việc bạn có thể dễ dàng làm cho việc có JWT hơn so có những xác nhận SAML.

Dễ sử xử lý hơn

JWT được dùng ở quy mô web. Vì thế, JWT dễ dàng để xử lý trên gần như những thiết bị của khách hàng, đặc biệt là những thiết bị di động.

JWT hoạt động ra sao?

Để hiểu hơn về phương pháp JWT hoạt động, chúng ta sẽ lấy dí dụ cụ thể ở đây là việc xác thực – Authentication.

Lúc khách hàng thông tin account vào trình thông qua, trình thông qua sẽ tự động POST account và mật khẩu của khách hàng về server. Lúc này, server xác thực và trả 1 chuỗi JWT về cho trình thông qua. Token JWT sẽ được lưu trữ trong cookies hoặc LocalStorage, thay vì tạo session trên server và trả về cookies.

Để rõ hơn về quá trình thực hành, bạn có thể xem ảnh nhé!

Tới đây, chúng ta đã đi qua 1 hành trình dài để tìm hiểu về JSON Net Tokens – JWT là gì, cũng như những lợi ích mà JWT đem lại cho người dùng. Hello vọng rằng, những thông tin, tri thức này sẽ tương trợ bạn trong việc gia nâng cao bảo mật cho web site, ứng dụng của mình!

Bài viết có tham khảo từ: Introduction lớn JSON Net Tokens, JSON Net Tokens – Auth0.

Những câu hỏi thường gặp về JWT

CÔNG TY CỔ PHẦN TẬP ĐOÀN TINO

  • Trụ sở chính: L17-11, Tầng 17, Tòa nhà Vincom Heart, Số 72 Lê Thánh Tôn, Phường Bến Nghé, Quận 1, Thành phố Hồ Chí MinhVăn phòng đại diện: 42 Trần Phú, Phường 4, Quận 5, Thành phố Hồ Chí Minh
  • Điện thoại: 0364 333 333Tổng đài miễn phí tổn: 1800 6734
  • Electronic mail: gross [email protected]
  • Web site: www.tino.org