Tìm Hiểu Về JWT - Đào Văn Đô
Có thể bạn quan tâm
ở bài viết trước mình có đề cập đến Token Base và Cookie Base. Bạn nào chưa đọc có thể ấn vào đây để có thể đọc và hiểu về khái niệm giữa 2 thằng. Thì bài hôm nay mình sẽ viết về JWT, một dạng authen bằng token.
- JWT – Json Web Token là gì.
JWT hiểu theo cách đơn giản thì nó là 1 chuẩn giúp tạo ra 1 chuỗi mã hóa. Hay còn gọi là 1 token chứa dữ liệu. Nó giúp cho các hệ thống có thể trao đổi thông tin với nhau, hay việc trao đổi thông tin từ client đến server được an toàn và đáng tin cậy. Mình sẽ lấy 1 ví dụ cơ bản.
{"username":"Dodv","address":"Ha Noi","age":24}
mình có 1 đoạn json như thế này, mình sẽ dùng base 64 để encode đoạn json trên. Và kết quả của mình tạo được như sau.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IkRvZHYiLCJhZGRyZXNzIjoiSGEgTm9pIiwiYWdlIjoyNH0.Yg0U-1AaeztfZ8X9LWFtBSWa_sexJ9grpLe7NdUwZSg
Và để biết được tại sao lại có thể từ 1 đoạn json bên trên mà có thể tạo ra 1 token như bên dưới. Thì mình cùng tìm hiểu về cấu trúc và cơ chế hoạt động của JWT.
2. Cấu trúc của JWT.

Nhìn vào hình bên trên thì có thể thấy cấu trúc của JWT sẽ bao gồm ba phần. Phần HEADER, phần PAYLOAD và phần VERIFY SIGNATURE.
2.1. Phần HEADER.
Ở phần header sẽ chứa hai thông tin đó là thuật toán dùng để mã hóa, bên trên là nó dùng thuật toán HS256. Và token type là JWT. Sau đó nó dùng thuật toán là Base64 để mã hóa object json bên trên để tạo ra được chuỗi đầu tiền.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
2.2 Phần PAYLOAD
Ở phần payload sẽ tương tư như phần HEADER, nhưng ở đây object json mà nó mã hóa sẽ là dữ liệu mình truyền vào. Kết quả sau khi mã hóa. 1 lưu ý là nếu phần PAYLOAD bạn bỏ vào đó quá nhiều thông tin, thì đoạn mã hóa được sinh ra sẽ càng dài. Vì vậy hãy chỉ đưa những thông tin mà quan trọng và cần thiết vào phần PAYLOAD thôi nhé.
eyJ1c2VybmFtZSI6IkRvZHYiLCJhZGRyZXNzIjoiSGEgTm9pIiwiYWdlIjoyNH02.3 Phần VERIFY SIGNATURE
Đến đây thì bạn sẽ có thắc mắc, nếu encode bằng Base64 thì vẫn có thể được decode ngược lại. Và để đảm bảo tính bảo mật và an toàn, thì JWT sẽ có thêm 1 phần nữa đó là phần SIGNATURE.
Phần SIGNATURE được tạo ra như thế nào và nó hoạt động ra sao, hãy nhìn vào hình bên trên của mình. Ở phần này nó sẽ sử dụng cái thuật toán được khai báo ở phần HEADER. Tùy thuộc vào loại thuật toán mà nó sẽ có tham số đầu vào khác nhau. Như hình trên thì đối với thuật toán HS256 thì đầu vào của nó sẽ bao gồm 2 tham số. Đó là phần mã hóa của HEADER và PAYLOAD kết hợp với 1 đoạn secret key. Secret key này sẽ được nằm ở trên server.
Yg0U-1AaeztfZ8X9LWFtBSWa_sexJ9grpLe7NdUwZSg
Sự kết hợp giữa 3 phần sẽ tạo ra 1 đoạn token. Và đương nhiên là nếu chỉ cần thay đổi một trong 3 phần bất kì nào đó, thì đoạn token sẽ được thay đổi hoàn toàn. Nên trường hợp mà sửa đổi token để thay đổi thông tin là hoàn toàn không thể.
Ngoài ra thì mình cũng có thể thêm các cấu hình như thời gian hết hạn của 1 token. Thông thường 1 token sẽ có thời gian khá ngắn chỉ tầm 1-2 tiếng để đảm bảo tính bảo mật. Và mình phải dùng đến cơ chế refresh token, để khi token nó gần hết hạn thì mình dùng cái refresh token đó để xin cấp 1 token mới.
3. Vậy JWT được sử dụng như thế nào.

Sau khi user gửi thông tin bao gồm username và password lên server. Server sẽ verify thông tin đó. Nếu thông tin hợp lệ thì sẽ generate ra 1 JWT. Và mỗi lần user gửi yêu cầu lấy dữ liệu từ phía server thì sẽ gửi kèm cái JWT này. Và phía server sẽ dựa vào JWT vừa gửi lên để kiểm tra xem JWT có hợp lệ hay không, user này là ai, và có những quyền gì. Phần này mình đã nói khá chi tiết ở bài trước rồi. Mn có thể tham khảo lại. Có 2 mục đích chính khi sử dụng JWT.
Authentication: Đây là trường hợp phổ biến nhất thường sử dụng JWT. Khi người dùng đã đăng nhập vào hệ thống thì những request tiếp theo từ phía người dùng sẽ chứa thêm mã JWT. Điều này cho phép người dùng được cấp quyền truy cập vào các url, service, và resource mà mã Token đó cho phép. Phương pháp này không bị ảnh hưởng bởi Cross-Origin Resource Sharing (CORS) do nó không sử dụng cookie.
Trao đổi thông tin: JSON Web Token là 1 cách thức khá hay để truyền thông tin an toàn giữa các thành viên với nhau, nhờ vào phần signature của nó. Phía người nhận có thể biết được người gửi là ai thông qua phần signature. Và chữ ký được tạo ra bằng việc kết hợp cả phần header, payload lại nên thông qua đó ta có thể xác nhận được chữ ký có bị giả mạo hay không.
nguồn tham khảo : https://jwt.io/introduction/
Chia sẻ:
- X
Có liên quan
Từ khóa » Tìm Hiểu Về Jwt
-
JWT Là Gì? Toàn Tập Về JWT Từ Cơ Bản đến Chi Tiết - Tino Group
-
Tìm Hiểu Về Json Web Token (JWT) - Viblo
-
JSON Web Token (JWT) Là Gì - TopDev
-
JWT Là Gì? 3 Thành Phần Của JWT Bạn Nên Biết Ngay Hôm Nay - Teky
-
JWT Là Gì? Những Vai Trò Và Thành Phần Chính Của JWT - ITNavi
-
Tìm Hiểu Về JWT (JSON Web Token)
-
JWT Là Gì? Khái Niệm Về Json Web Token - Thuận Nhật
-
Hiểu Sâu Về JWT - JSON Web Tokens - Trung Quân
-
Xu Hướng 7/2022 # Tìm Hiểu Về Json Web Token (Jwt) # Top View
-
JWT Là Gì? Toàn Tập Về JWT Từ Cơ Bản đến Chi Tiết - Chickgolden
-
JWT Là Gì? Toàn Tập Về JWT Từ Cơ Bản đến Chi Tiết - Wiki Fin
-
Jwt Là Gì? Tổng Quan Kiến Thức Về JSON Web Token 2022 - Bizfly
-
Top #10 Tìm Hiểu Về Jwt Xem Nhiều Nhất, Mới Nhất 7/2022 # Top ...
-
Tìm Hiểu Một Chút Về JWT - 2KVN