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

Nguồn bài viết: JWT là gì? Toàn tập về JWT từ cơ bản đến chi tiết

Tăng cường bảo mật cho các trang web, ứng dụng hay bất kỳ dịch vụ công nghệ thông tin nào là ưu tiên hàng đầu của các nhà phát triển. Trong thời gian gần đây, JWT đã nổi lên như một hình thức bảo mật tốt – miễn phí ở “top of the top” dành cho các nhà phát triển. Vậy, JWT là gì? Cấu trúc của JWT như thế nào? Tại sao và khi nào sử dụng JWT?

Tìm hiểu về JWT

JWT là gì?

JWT viết tắt của Mã thông báo web JSON – một tiêu chuẩn mở RFC 7519, được sử dụng như một đại diện nhỏ gọn, để giao tiếp thông tin giữa máy chủ và máy khách thông qua một chuỗi JSON.

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

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

Bạn có thể tìm thêm thông tin về Mã thông báo web JSON tại trang web chính thức: JWT.io.

jwt-la-gi

3 thành phần của JWT

Một JWT tiêu chuẩn nhỏ gọn sẽ bao gồm 3 thành phần chính được phân tách với nhau bằng dấu chấm (.). Họ đang:

Nói một cách đơn giản, JWT sẽ có dạng như sau: xxxxx.yyyyy.zzzz.

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

jwt-la-gi

Người đứng đầu JWT

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

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

Ví dụ như sau:

{
"alg": "HS256",
"typ": "JWT"
}

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

Tải trọng của JWT

Tải trọng là phần tử thứ hai trong JWT chứa thông tin về quyền sở hữu một thực thể và dữ liệu bổ sung. Trong đó, có 3 loại bảo mật xác thực bao gồm: xác nhận quyền sở hữu đã đăng ký, công khai và riêng tư.

Ví dụ:

{"alg": "HS256", "typ": "JWT"}

Chữ ký của JWT

Thành phần cuối cùng, cũng là 1 trong 3 thành phần quan trọng nhất của JWT: Signature – chữ ký. Để tạo chữ ký, bạn sẽ cần mã hóa tiêu đề, khối hàng, mã khóa bí mật bí mậtthuật toán được sử dụng để mã hóa tiêu đề và chữ ký.

Ví dụ:

HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)

Chữ ký được sử dụng để xác minh rằng tin nhắn đến không bị thay đổi. Trong trường hợp người dùng sử dụng khóa riêng cho các mã thông báo đã ký, Chữ ký cũng có thể xác nhận rằng người gửi là người tạo JWT.

Kết hợp tất cả lại với nhau, chúng tôi nhận được:

Đầu ra sẽ là một chuỗi trên tiêu chuẩn Base64-URL có thể dễ dàng chuyển qua các môi trường HTML và HTTP so với tiêu chuẩn XML qua SAML.

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

jwt-la-gi

Mã thông báo web JSON được sử dụng để làm gì?

Khi nào sử dụng JWT?

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

  • Ủy quyền – Ủy quyền
  • Truyền thông và bảo vệ tính toàn vẹn – Trao đổi thông tin

Ủy quyền – Ủy quyền

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

Khi người dùng đăng nhập thành công bằng thông tin đăng nhập của họ, ứng dụng có thể yêu cầu quyền truy cập vào tài nguyên, dịch vụ, v.v. Mỗi lần đăng nhập, họ sẽ phải cung cấp Mã thông báo truy cập ở dạng JWT. Tại thời điểm này, biểu mẫu đăng ký một lần SSO của bạn sẽ cần JWT vì JWT có chi phí định dạng nhỏ và có thể được sử dụng trên nhiều miền cùng một lúc.

Truyền thông và bảo vệ tính toàn vẹn – Trao đổi thông tin

JWT là một cách tối ưu để giao tiếp và bảo vệ tính toàn vẹn của thông tin vì:

  • JWT sử dụng cặp khóa công khai / riêng tư – bạn có thể xác minh rằng người gửi có đúng như những gì họ nói hay không.
  • Chữ ký được tính bằng cách sử dụng tiêu đề và tải trọng. Vì vậy, bạn cũng có thể xác minh rằng nội dung không bị giả mạo.

JWT mang lại những lợi ích gì?

Nhỏ gọn hơn

JWT ngắn gọn hơn XML. Do đó, khi mã hóa, mã thông báo JWT cũng sẽ ngắn hơn SAML. Điều này làm cho JWT trở thành một lựa chọn phù hợp hơn trong môi trường HTML và HTTP.

jwt-la-gi

An toàn hơn

JWT sử 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 với một bí mật được chia sẻ bằng cách sử dụng thuật toán HMAC.

SAML có thể sử dụng các cặp khóa công khai / riêng tư như JWT. Tuy nhiên, chữ ký số XML có nhiều lỗ hổng bảo mật và cách thức triển khai cũng khó hơn JWT rất nhiều.

Phổ biến hơn

Trình phân tích cú pháp JSON phổ biến hơn trong hầu hết các ngôn ngữ lập trình, vì chúng ánh xạ trực tiếp đến các đối tượng. Ngược lại, XML không có ánh xạ tài liệu gốc.

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

Dễ dàng xử lý hơn

JWT được sử dụng ở quy mô internet. Do đó, JWT dễ dàng xử lý trên hầu hết các thiết bị của người dùng, đặc biệt là thiết bị di động.

JWT hoạt động như thế nào?

Để hiểu rõ hơn về cách thức hoạt động của JWT, chúng ta sẽ lấy một ví dụ cụ thể ở đây: Xác thực.

Khi thông tin tài khoản của người dùng vào trình duyệt, trình duyệt sẽ tự động ĐĂNG tài khoản và mật khẩu của người dùng lên máy chủ. Tại thời điểm này, máy chủ xác thực và trả về một chuỗi JWT cho trình duyệt. Các mã thông báo JWT sẽ được lưu trữ trong cookie hoặc LocalStorage, thay vì tạo phiên trên máy chủ và trả lại cookie.

Để biết thêm về quá trình này, bạn có thể xem các bức ảnh!

jwt-la-gi

Đến đây, chúng ta đã cùng nhau trải qua một hành trình dài để tìm hiểu về JSON Web Token – JWT là gì cũng như những lợi ích mà JWT mang lại cho người dùng. Hy vọng rằng những thông tin và kiến ​​thức này sẽ hỗ trợ bạn trong việc tăng cường bảo mật cho trang web và ứng dụng của bạn!

Bài viết có tham khảo từ: Giới thiệu về JSON Web Tokens, JSON Web Tokens – Auth0.

Câu hỏi thường gặp về JWT

Thư viện xác thực cho JWT ở đâu?

Nếu bạn đang tìm danh sách các thư viện cho JWT để phục vụ cho công việc của mình, bạn có thể truy cập Libraries for Token Signing / Verification để tìm cho mình thư viện phù hợp từ: .NET, Python, Node.js, Java, JavaScript, Perl, Ruby, .. đi, Erlang, Haskell,…

Làm thế nào để nhận được hỗ trợ khi sử dụng JWT?

Nếu bạn muốn được hỗ trợ khi sử dụng JWT, cách tốt nhất là tham gia các cộng đồng hỗ trợ JWT miễn phí như trên Facebook, Reddit, v.v. hoặc Cộng đồng Auth0 của JWT.

Làm cách nào để tạo quyền cho tổ chức truy cập mã thông báo?

Để có thể tạo quyền truy cập mã thông báo cho toàn bộ tổ chức của mình, bạn có thể tạo quyền được liên kết với một API cụ thể.

Sau đó, bạn chuyển mã định danh API của API đó làm tham số cho đối tượng khi bạn thực hiện yêu cầu đối với mã thông báo. Sau đó người dùng sẽ được cấp quyền tương ứng với các API đó.

Tôi có thể tìm hiểu thêm về JWT bằng cách nào?

Nếu bạn muốn tìm hiểu thêm về JWT, bạn có thể xem nó tại JSON Web Tokens Auth0 Doculation. Không chỉ có những kiến ​​thức cơ bản về JWT, bạn còn có thể học cách tạo xác thực, ủy quyền, bảo mật và thậm chí là xây dựng một ứng dụng với tài liệu cực kỳ đầy đủ, chi tiết của Auth0.

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

  • Trụ sở chính: L17-11, Lầu 17, Tòa nhà Vincom Center, Số 72 Lê Thánh Tôn, P. Bến Nghé, Q.1, TP.
    VPĐD: 42 Trần Phú, P.4, Q.5, TP.HCM
  • Điện thoại: 0364 333 333
    Tổng đài miễn cước: 1800 6734
  • Email: sales@tino.org
  • Trang web: www.tino.org

Xem thêm nhiều bài viết về : Kiến Thức Cơ Bản

Bản quyền thuộc: thuthuatkiemtien.com



from thuthuatkiemtien.com https://ift.tt/3JDQw8P
via thuthuatkiemtien.com

Nhận xét

Bài đăng phổ biến từ blog này

3 Cách để kiếm tiền từ blog WordPress

Google AdSense bỏ giới hạn số lượng quảng cáo trên mỗi trang

Toàn tập danh sách liên kết đơn trong C++