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

Tăng độ bảo mật cho trang web, ứng dụng hay bất cứ một dịch vụ công nghệ thông tin nào cũng 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í ở mức “đỉnh của đỉnh” dành cho các nhà phát triển. Vậy, JWT là gì? Cấu tạo của JWT ra sao? Vì sao và khi nào nên sử dụng JWT?

Tìm hiểu về JWT

JWT là gì?

JWT là viết tắt của JSON Web Tokens – một tiêu chuẩn mở RFC 7519, được sử dụng như một phương tiện đại diện nhỏ gọn, để truyền đạt thông tin giữa server và client thông qua một chuỗi JSON.

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

ADVERTISEMENT

Nhà phát triển của JWT tuyên bố rằng, họ tập trung vào các signed token, các 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 các bên khác. Khi signed token sử dụng cặp khóa công khai/ riêng tư, đồng nghĩa với việc bên nắm giữ cả 2 khóa là bên đã đăng ký signed token.

Bạn hoàn toàn có thể tìm hiểu thêm thêm thông tin về JSON Web Tokens tại website 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ẽ gồm có 3 thành phần chính được phân tách với nhau bởi dấu chấm (. ). Chúng là :

  • Header
  • Payload
  • Signature

Một cách đơn thuần, JWT sẽ có dạng như sau : xxxxx.yyyyy.zzzz .
Để hiểu hơn về JWT, tất cả chúng ta sẽ khám phá chi tiết cụ thể từng thành phần của JWT nhé !
jwt-la-gi

Header của JWT

Header của JWT sẽ gồm có 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ứ 2 là JWT.

Ví dụ như sau :

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

Trong đó, 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 một thực thể và những tài liệu bổ trợ. Trong đó, có 3 loại bảo mật thông tin xác nhận gồm có : registered, public và private claims .
Ví dụ như :
{
"alg": "HS256",
"typ": "JWT"
}

Signature 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 được một chữ ký, bán sẽ cần phải mã hoá header, payload, mã khóa bí mật secret thuật toán sử dụng để mã hóa header và chữ ký đó.

Ví dụ :

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

Signature được sử dụng để xác định rằng tin nhắn được gửi đến không bị biến hóa. Với trường hợp người dùng sử dụng dùng private key cho tokens signed, Signature cũng hoàn toàn có thể xác nhận rằng người gửi là người tạo JWT .
Phối hợp toàn bộ lại với nhau, ta sẽ có :
Kết quả đầu ra sẽ là dạng chuỗi trên tiêu chuẩn Base64-URL hoàn toàn có thể thuận tiện truyền đi qua HTML và môi trường tự nhiên HTTP so với tiêu chuẩn XML trên SAML .
Sau khi mã hoá, tất cả chúng ta sẽ có một chuỗi JWT như ở bên trái màn hình hiển thị và bên phải sẽ là phần được giải thuật .
jwt-la-gi

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

Khi nào nên sử dụng JWT?

Trong trong thực tiễn, JWT hoàn toàn có thể ứng dụng trong rất nhiều hoạt động giải trí khác nhau. Hai trường hợp nổi bật hoàn toàn có thể sử dụng JWT là :

  • Uỷ quyền – Authorization
  • Truyền đạt và bảo vệ toàn vẹn thông tin – Information Exchange

Uỷ quyền – Authorization

Đây là trường hợp nổi bật nhất để bạn hoàn toàn có thể vận dụng JWT vào đấy !
Khi người dùng đăng nhập thành công xuất sắc bằng thông tin của họ, ứng dụng hoàn toàn có thể nhu yếu truy vấn vào những tài nguyên, dịch vụ, …. Mỗi lần thực thi, chúng sẽ phải cung ứng 1 Access 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 đến JWT do tại JWT có ngân sách định dạng nhỏ và hoàn toàn có thể sử 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 – Information Exchange

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

  • JWT sử dụng cặp khóa công khai/ riêng tư – bạn có thể kiểm tra, đố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 cách sử dụng header và payload. Vì vậy, bạn cũng có thể xác thực được rằng nội dung không bị giả mạo.

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

Nhỏ gọn hơn

JWT ngắn gọn hơn XML. Vì thế, khi mã hóa, token JWT cũng sẽ ngắn hơn SAML. Điều này khiến JWT trở thành một lựa chọn tương thích hơn trong HTML và thiên nhiên và môi trường HTTP .
jwt-la-gi

An toàn hơn

JWT sử dụng cặp khóa công khai minh bạch / riêng tư dưới dạng chứng từ X. 509 để ký ; JWT cũng hoàn toàn có thể được ký đối xứng bằng một mã bí hiểm được san sẻ 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ố bằng XML lại có nhiều lỗ hổng bảo mật rất, phương pháp thực hiện khó khăn hơn JWT rất nhiều.

Phổ biến hơn

Bộ nghiên cứu và phân tích cú pháp JSON thông dụng hơn trong hầu hết những ngôn từ lập trình, vì chúng ánh xạ trực tiếp đến những đối tượng người tiêu dùng. Ngược lại, XML không có ánh xạ tài liệu một cách tự nhiên .
Điều này dẫn đến việc bạn hoàn toàn có thể thuận tiện thao tác với JWT hơn so với những xác nhận SAML .

Dễ sử xử lý hơn

JWT được sử dụng ở quy mô internet. Vì thế, JWT thuận tiện để giải quyết và xử lý trên hầu hết những thiết bị của người dùng, đặc biệt quan trọng là những thiết bị di động .

JWT hoạt động ra sao?

Để hiểu hơn về cách JWT hoạt động giải trí, tất cả chúng ta sẽ lấy ví dụ đơn cử ở đây là việc xác nhận – Authentication .
Khi người dùng thông tin thông tin tài khoản vào trình duyệt, trình duyệt sẽ tự động hóa POST thông tin tài khoản và mật khẩu của người dùng về server. Lúc này, server xác nhận và trả một chuỗi JWT về cho trình duyệt. Token JWT sẽ được tàng trữ trong cookies hoặc LocalStorage, thay vì tạo session trên server và trả về cookies .
Để rõ hơn về quy trình thực thi, bạn hoàn toàn có thể xem ảnh nhé !
jwt-la-giĐến đây, tất cả chúng ta đã đi qua một hành trình dài dài để tìm hiểu và khám phá về JSON Web Tokens – JWT là gì, cũng như những quyền lợi mà JWT đem lại cho người sử dụng. Hi vọng rằng, những thông tin, kiến thức và kỹ năng này sẽ tương hỗ bạn trong việc ngày càng tăng bảo mật thông tin cho website, ứng dụng của mình !
Bài viết có tìm hiểu thêm từ : Introduction to JSON Web Tokens, JSON Web Tokens – Auth0 .

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

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

Nếu đang tìm list những thư viện cho JWT nhằm mục đích ship hàng cho việc làm của mình, bạn hoàn toàn có thể truy vấn vào Libraries for Token Signing / Verification để tìm cho mình thư viện tương thích từ :. NET, Python, Node. js, Java, JavaScript, Perl, Ruby, .. cho đến Go, Erlang, Haskell, …

Làm sao để được hỗ trợ khi sử dụng JWT?

Nếu bạn muốn được tương hỗ khi sử dụng JWT, cách tốt nhất là bạn tham gia vào những hội đồng tương hỗ JWT không tính tiền như trên Facebook, Reddit, … hoặc Auth0 Community “ chính chủ ” của JWT .

Cách tạo quyền cho tổ chức truy cập vào token ra sao?

Để hoàn toàn có thể tạo quyền truy vấn token cho hàng loạt tổ chức triển khai, bạn hoàn toàn có thể tạo quyền link với một API đơn cử .
Sau đó, bạn quy đổi mã nhận dạng API của API đó làm thông số kỹ thuật cho đối tượng người dùng khi tạo nhu yếu đến token. Khi đó, người dùng sẽ được cấp quyền tương ứng với những API đó .

Làm sao để tìm hiểu thêm về JWT?

Nếu muốn khám phá thêm về JWT, bạn hoàn toàn có thể tìm hiểu và khám phá tại JSON Web Tokens Auth0 Documation. Không chỉ những kiến thức và kỹ năng cơ bản về JWT, bạn còn hoàn toàn có thể học cách để tạo xác nhận, uỷ quyền, bảo mật thông tin và thậm chí còn là thiết kế xây dựng một ứng dụng với bộ tài liệu chi tiết cụ thể, vô cùng rất đầy đủ của Auth0 .

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

  • Trụ sở chính: L17-11, Tầng 17, Tòa nhà Vincom Center, Số 72 Lê Thánh Tôn, Phường Bến Nghé, Quận 1, Thành phố Hồ Chí Minh
    Vă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 333
    Tổng đài miễn phí: 1800 6734
  • Email: [email protected]
  • Website: www.tino.org

Source: https://wikifin.net
Category: Blog

Leave a Comment

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *