- Tổng đài 24/7: 1800 646 881
- Đăng nhập
- 3
Khi thiết kế một website, ứng dụng hay phần mềm nhà phát triển luôn quan tâm tới yếu tố bảo mật. Gần đây họ thường xuyên sử dụng JSON Web Token (JWT) để hạn chế sự xâm nhập của tác nhân độc hại. Hãy cùng BKHOST tìm hiểu những vấn đề liên quan tới JWT trong bài viết dưới đây.
JSON Web Token (JWT) được biết đến là một tiêu chuẩn mở được dùng để truyền thông tin an toàn giữa Client – Server dưới định dạng JSON. Như vậy có thể thấy tất cả JWT đều là mã thông báo nhưng không phải bất cứ mã thông báo nào cũng là JWT.
JWT được truyền đi nhanh chóng bởi kích thước của nó rất nhỏ. JWT được gửi qua nhiều con đường chẳng hạn như URL, tham số POST hoặc bên trong tiêu đề HTTP. Mọi thông tin cần thiết về một thực thể đều được chứa trong JWT để không phải lặp đi lặp lại việc truy vấn cơ sở dữ liệu. Ngoài ra khi nhận JWT người nhận cũng không cần liên lạc với server để xác thực mã thông báo.
So với tiêu chuẩn SAML và SWT thì JWT có nhiều điểm nổi trội hơn. Vì lẽ đó mà nó được nhiều nhà phát triển tin dùng cho các sản phẩm của họ. Dưới đây là những ưu thế của JWT:
Người dùng sử dụng JWT trong nhiều trường hợp, ví dụ:
Chữ ký trên web JSON (JWS) xuất hiện là bởi mọi JWT do Auth0 cấp đều được ký chữ không phải mã hóa. JWS sử dụng cấu trúc dữ liệu dựa trên JSOn để đại diện cho một nội dung nào đó được bảo mật bằng MAC hoặc chữ ký số. Cấu trúc của JSON Web Token được định dạng tốt sẽ gồm ba phần và mỗi phần ngăn cách nhau bởi dấu chấm (.):
JWT sẽ có hình thức như:
Nếu bạn muốn xem bên trong của JWT hãy dùng JWT.io (trình gỡ rối). Với JWT.io bạn có thể biết được JWT hình thành tốt không chỉ sau một vài thao tác đơn giản. Mặt khác nó cũng cho phép bạn kiểm tra thủ công các giá trị của những yêu cầu khác.
Các tham số mô tả các hoạt động mật mã và các tham số được sử dụng đều được chứa ở đối tượng JSON. JOSE header sẽ là tập hợp các Header Parameters gồm một cặp name/value: thuật toán băm (chẳng hạn như HMAC SHA256, RSA) và type JWT.
{"alg": "HS256","typ": "JWT"}
JWS payload chưa những thông tin về một thực thể mà phần lớn là người dùng cùng với các yếu tố để xác nhận danh tính, quyền sở hữu. Ở ví dụ sau thực thể chúng tôi hướng đến là một người dùng. Một điều cần lưu ý là bạn phải biết các loại xác nhận quyền sở hữu và cách thức đặt tên của chúng để không gặp rắc rối khi thực hiện xác nhận quyền sở hữu JWT.
{"sub": "1234567890","name": "John Doe","admin": true}
JWS signature (chữ ký JWS) để người nhận xác minh được danh tính của người gửi JWT và đảm bảo nội dung của thư không bị xáo trộn, thay đổi. Để tạo chữ ký bắt buộc header được mã hóa Base64, payload được thực hiện cùng với một chuỗi secret. Ví dụ bạn dùng thuật toán HMAC SHA256 để tạo chữ ký cho mã thông báo, bạn thực hiện như sau:
HMACSHA256(base64UrlEncode(header) + "." +base64UrlEncode(payload),secret)secret)
Qua một vài thông tin về JSON Web Token (JWT) mà chúng tôi cung cấp ở trên hy vọng đã giúp bạn phần nào hiểu được JWT là gì và những lợi ích mà nó mang lại. Nếu bạn muốn trang web, ứng dụng của mình gia tăng độ bảo mật hãy mạnh dạn thử JWT xem sao.
Nếu còn gặp bất cứ vướng mắc gì về JSON Web Token (JWT), hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.
P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.
Mua tên miền .VN tại BKHOST
Giá chỉ từ 750k/năm. Kiểm tra tên miền .VN đẹp và đăng ký ngay hôm nay!