JWT là gì? JASON web Token được định nghĩa như thế nào?

Mục lục

1. JWT có nghĩa là gì?

JWT hay còn được gọi là JASON Web Token được hiểu là một tiêu chuẩn mà trong đó có chứa các chuỗi ký tự được được chia ra thành các phần. Phần thông tin này sẽ được truyền đi một cách an toàn bởi các đối tượng JASON. Trong đó các đối tượng được truyền đi này sẽ được xác thực bằng và được đánh dấu thông qua chính chữ kỹ của nó. Hay nói cách khác JWT như là một chuỗi các ký tự được mã hóa nhằm mục đích sử dụng cho việc xác thực. Vậy để có thể tìm hiểu kỹ hơn về các vấn đề có xoay quanh JTW mời bạn các bạn cùng theo dõi bài viết sau đây.

2. Một số thuật ngữ được sử dụng phổ biến và có liên quan đến JWT

Nếu các thuật ngữ trong tin học bằng tiếng Anh phức tạp và khó hiểu đối với bạn thì mời bạn cùng theo một số gợi ý về các thuật ngữ sau đây.

- Token được định nghĩa là một loại chữ ký được biểu hiện dưới dạng số hay chữ ký điện tử và đã được mã hóa và tồn tại dưới dạng các con số. Mã Token được chia ra thành 2 dạng chính đó là hard token và soft token. Cả hai loại này đều được sử dụng khi người dùng thực hiện các phiên giao dịch. 

- Header chính là phần mở đầu trong chuỗi các ký tự thuộc JWT đã được mã hóa. 

- Playload đây chính là phần thông tin được truyền đi và là phần thứ hai trong chuỗi ký tự JWT, đứng ngay sau phần Header và dấu chấm của phần mở đầu. 

- Signature chính là phần chữ ký đã được mã hóa và nó được tạo thành từ hai phần trước đó là Header và Playload cộng lại.

3. JWT bao gồm những gì?

JWT được chia ra làm 3 phần đó là Header, Payload và signature. Cả 3 phần này đều được biểu hiện bằng các chuỗi ký tự và được ngăn cách nhau bởi dấu chấm. Ở mỗi thành phần trong chuỗi JWT lại được chia nhỏ thành các thành phần khác nhau. 

3.1. Header - phần mở đầu trong chuỗi JWT bao gồm những thông tin gì?

Phần mở đầu Header lại được chia nhỏ thành các phần đó là thứ nhất đó là loại mã token sẽ được sử dụng, thứ hai đó là phần chữ ký. Trong đó, loại mã token được sử dụng đó là JWT, thuật toán được sử dụng để mã hóa lại được chia thành 2 loại mà người dùng có thể lựa chọn đó là HS256 và RSA. 

Các thông tin trong phần mở đầu trong các Header này sẽ được mã hóa bằng cách sử dụng chương trình mã hóa - Base64 url các chuỗi các ký tự có trong header. 

3.2. Phần thứ hai - Payload trong JWT

Playload là tập hợp các khai báo mà trong đó có chứa các thông tin có thể được truyền đi và bao gồm cả các thông tin có chứa trong các mã Token. Vậy cụ thể các thông tin có trong khai báo báo trong Playload bao gồm các loại khai báo như sau: 

Registered Claim - khai báo cài đặt: Trong khai báo này có chứa tất cả các thông tin có liên quan đến mã Token như: 

- Người phát hành mã Token 

- Các chủ có liên quan đến Token

- Người sử dụng Token là ai? 

- Thời hạn sử dụng của Token khi nào hết hạn? 

- Thời điểm token chưa hợp lệ 

- Token được phát hành vào thời điểm nào? Thời gian được phát hành được tính theo đơn vị Unix time - được tính bằng giây. 

- Mã định danh của JWT hay JWT ID

3.3. Khai báo chung và khai báo riêng trong phần Playload

Hai dạng khai báo còn lại của JWT lần lượt là Public Claim - khai báo chung và Private Claim - khai báo riêng. Cụ thể mỗi phần khai báo này cần chú ý các nội dung sau đây. 

Khai báo chung hay còn gọi là Public Claim có thể được tùy ý khai báo. Tuy nhiên một trong nhưng để tránh tình trạng xảy ra trùng lặp hay đối lập nhau thì Public Claim nên được khai báo tại IANA JASON Web Token. Hoặc bạn cũng có thể khai báo bằng cách chọn một URL mà không chứa các tên đã bị trùng lặp. 

Còn đối với Private Claim thì bạn có thể thực hiện đảm bảo không trùng với các khai báo cài đặt và khai báo chung như trên. Đồng thời trong khai báo này chủ yếu chứa các thông tin của người dùng trong đó có cả mã định danh của người dùng. Như vậy, từ việc khai báo này khi các khai báo được mã hóa thì thông tin của người dùng sẽ được xuất hiện. Điều này có nghĩa bạn sẽ biết được thông tin khai báo này là của người nào gửi lên. 

Đó là các thông tin khái quát về các phần bên trong của phần hai Playload trong một chuỗi JWT. Vậy trong phần nội dung cuối cùng Signature - chữ ký sẽ bao gồm các nội dung gì? Câu trả lời sẽ xuất hiện trong phần nội dung tiếp theo. 

3.4. Chữ ký - Signature trong chuỗi JWT là gì?

Phần chữ ký trong chuỗi ký tự của JWT chính là phần nội dung được được tổng hợp từ kết quả của hai phần trước đó là Header và Playload. Với các thuật toán được thực hiện từ hai giai đoạn trước và các thông tin đã được mã hóa sau đó. Chữ ký là cách để xác minh rằng các thông điệp được gửi đi được đảm bảo an toàn và không có bất kỳ sự thay đổi nào. Khi các mã Token được người dùng sử dụng bằng các Secretkey thì điều này đồng nghĩa với việc thông tin về người gửi mã chữ ký đó là ai?

4. JWT được sử dụng để làm gì?

JWT có hai vai trò chính đó là được sử dụng trong việc xác thực khi người dùng muốn đăng nhập vào bất kỳ địa chỉ web hay ứng dụng nào. Người dùng được phép đăng nhập và sử dụng được các tài nguyên tại các trang web hay ứng dụng trên mạng chỉ khi từng cánh cửa được mở ra khi có chìa khóa vạn năng là các mã Token - chữ ký được thực hiện để đáp ứng được các yêu cầu được đưa ra. Đây chính là mối quan hệ người dùng với máy chủ. 

Trường hợp thứ hai đó là JWT được sử để có thể trao đổi thông tin - Information Exchange. JWT với 3 chuỗi thành phần đại diện cho các phần thông tin đã được mã hóa theo một quy trình làm việc. Đặc biệt thông qua chữ ký của người gửi mà người nhận có thể xác định được các thông tin đã được gửi đến đó là thật hay giả mạo. Chính vì vậy, đây cũng chính là một trong những cách để người dùng có thể trao đổi thông tin một cách an toàn tuyệt đối. 

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

Để có thể hiểu hết được các tính năng có trong JWT thì việc tìm hiểu về quy trình hoạt động của JWT là điều mà bạn nên làm. Vậy quy trình hoạt động của JWT như thế nào? Và quá trình mà các JWT hoạt động ra sao? 

Quy trình hoạt động của một chuỗi JWT được thực hiện thông qua 6 bước sau đây: 

Bước 1: Người sử dùng đăng nhập và các ứng dụng hay một trang web bất kỳ thì các thông tin trong phần đăng nhập đó sẽ xác thực để định danh người dùng. 

Bước 2: Tạo một chuỗi JWT bí mật sau khi người dùng đã đăng nhập thành công vào các ứng dụng hay các web khác. 

Bước 3: Quay trở lại với các trình duyệt, sau khi người dùng hoàn thành việc đăng nhập thì công đoạn làm việc tiếp theo thuộc về các trình duyệt - Browser sẽ khai báo các thông tin và mật khẩu người dùng về máy chủ. 

Bước 4: Chuỗi JWT sẽ được gửi đến các header để được cấp phép. 

Bước 5: Kiểm tra lại chuỗi JWT và có được thông tin của người dùng từ chính chính các chuỗi JWT đã được gửi đến. 

Bước 6: Sau khi máy chủ đã có được các thông tin xác thực của người dùng thông qua các chuỗi JWT đã được gửi đến thì tiếp theo sau đó máy chủ sẽ gửi phản hồi lại máy khách. Máy chủ sẽ gửi lại quyền truy cập Token và làm mới các mã Token bằng các chuỗi JWT về trình duyệt. 

Chính các bước thực hiện này sẽ giúp người dùng trong việc xác thực thông tin đăng nhập một cách nhanh chóng hơn bởi các mã Token trong chuỗi JWT sẽ được trả về trình duyệt và sẽ được lưu lại trên chính trình duyệt của người dùng ngay sau đó. 

Khi người dùng muốn đăng nhập vào các ứng dụng hay web nào khác thì máy khách sẽ gửi các yêu cầu có kèm theo các mã Token JWT đến máy chủ. 

Một câu hỏi được đặt ra về chuỗi JWT đó là Secret Key trong chuối JWT có nghĩa là gì? Thuật toán HS256 được sử dụng để biểu hiện ý nghĩa của chuỗi JWT. Điều này có nghĩa sự bảo mật là một chìa khóa đối xứng chỉ được biết bởi hai đối tượng là người gửi và người nhận. 

Nó được sắp xếp và phân bổ ngoài các băng thông. Chính vì vậy, nếu người gửi có ý muốn dễ dàng nhận được các mã Token thì điều này có nghĩa người gửi cần phải gửi cho người nhận với sự bảo mật ngoài băng thông. 

Để đảm thông tin của người dùng thì một tiêu chuẩn với các chuỗi JWT đã ra đời phục vụ cho việc xác thực và bảo mật thông tin người dùng, và thông qua đó việc trao đổi thông tin giữa các người dùng, giữa máy chủ và máy khách cũng trở nên dễ dàng hơn. 

Các thông tin và kiến thức trong tin học như một dòng chảy luôn luôn đổi mới và chạy theo xu hướng của sự phát triển khoa học, công nghệ hiện đại ra đời. Người tạo ra các sản phẩm không ít nhưng kẻ phá hoại các sản phẩm đó cũng là một con số không hề nhỏ. JWT ra đời để có thể tạo ra được các chìa khóa bảo mật để giúp cho người dùng không gặp phải các rắc rối về vấn đề này. 

Như vậy, thông qua các thông tin trong bài viết JWT là gì? Hy vọng các thông tin trên phần nào giúp bạn hiểu được JWT là gì? Các thành phần trong đó và cách mà nó hoạt động ra sao? Ngoài ra bạn còn có thể tham khảo thêm nhiều các thông tin khác có liên quan đến JWT và các thuật ngữ chuyên ngành liên quan đến nó. 

Đăng ngày 20/11/2020, 43 lượt xem