12/08/2018, 16:36

JSON Web Token (JWT) là gì ?

Giới thiệu Trong bài viết này mình cùng tìm hiểu khái niệm JSON Web Token (JWT) là gì , trước tiên hãy xem giải thích theo lý thuyết được định nghĩa bởi RFC 7519 JWT là một phương tiện đại diện cho các yêu cầu chuyển giao giữa hai bên Client - Server , các thông tin trong chuỗi JWT được ...

Giới thiệu

Trong bài viết này mình cùng tìm hiểu khái niệm JSON Web Token (JWT) là gì , trước tiên hãy xem giải thích theo lý thuyết được định nghĩa bởi RFC 7519

JWT là một phương tiện đại diện cho các yêu cầu chuyển giao giữa hai bên Client - Server , các thông tin trong chuỗi JWT được định dạng bằng JSON . Trong đó chuỗi Token phải có 3 phần là header , phần payload và phần signature được ngăn bằng dấu “.”

Vậy theo lý thuyết trên thì mình sẽ có một chuỗi Token như sau :

    header.payload.signature

Header

Phần header sẽ chứa kiểu dữ liệu , và thuật toán sử dụng để mã hóa ra chuỗi JWT

{
    "typ": "JWT",
    "alg": "HS256"
}
  • “typ” (type) chỉ ra rằng đối tượng là một JWT
  • “alg” (algorithm) xác định thuật toán mã hóa cho chuỗi là HS256

Payload

Phần payload sẽ chứa các thông tin mình muốn đặt trong chuỗi Token như username , userId , author , ... ví dụ

{
  "user_name": "admin",
  "user_id": "1513717410",
  "authorities": "ADMIN_USER",
  "jti": "474cb37f-2c9c-44e4-8f5c-1ea5e4cc4d18"
}

Lưu ý đừng đặt quá nhiều thông tin trong chuỗi payload vì nó sẽ ảnh hưởng đến độ trể khi Server phải xác nhận một Token quá dài

Signature

Phần chử ký này sẽ được tạo ra bằng cách mã hóa phần header , payload kèm theo một chuỗi secret (khóa bí mật) , ví dụ

data = base64urlEncode( header ) + "." + base64urlEncode( payload )
signature = Hash( data, secret );
  • base64UrlEncoder : thuật toán mã hóa headerpayload

Đoạn code trên sau khi mã hóa headerpayload bằng thuật toán base64UrlEncode ta sẽ có chuỗi như sau

// header
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
// payload
eyJhdWQiOlsidGVzdGp3dHJlc291cmNlaWQiXSwidXNlcl9uYW1lIjoiYWRtaW4iLCJzY29wZSI6WyJyZWFkIiwid3JpdGUiXSwiZXhwIjoxNTEzNzE

Sau đó mã hóa 2 chuỗi trên kèm theo secret (khóa bí mật) bằng thuật toán HS256 ta sẽ có chuỗi signature như sau

9nRhBWiRoryc8fV5xRpTmw9iyJ6EM7WTGTjvCM1e36Q

Cuối cùng

Kết hợp 3 chuỗi trên lại ta sẽ có được một chuỗi JWT hoàn chỉnh

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsidGVzdGp3dHJlc291cmNlaWQiXSwidXNlcl9uYW1lIjoiYWRtaW4iLCJzY29wZSI6WyJyZWFkIiwid3JpdGUiXSwiZXhwIjoxNTEzNzE.9nRhBWiRoryc8fV5xRpTmw9iyJ6EM7WTGTjvCM1e36Q

Như vậy các bạn cũng đã hiểu được các thành phần của một chuỗi JWT , mời các bạn theo dõi tiếp bài viết sau mình sẽ nói Tại sao phải sử dụng JWT ?

Tài liệu

https://medium.com/vandium-software/5-easy-steps-to-understanding-json-web-tokens-jwt-1164c0adfcec

Bài liên quan

Web Scraping Bot là gì ?

Bot là một phần mềm thực hiện nhiệm vụ tự động trên Internet, thông thường là các công việc đơn giản, có tính lặp lại cao như thu thập dữ liệu máy tìm kiếm, theo dõi website, lấy dữ liệu web, đo tốc độ trang và hiệu suất API. Bot cũng thường được sử dụng tự động quét mạng và website ...

Trần Trung Dũng viết 4 tuần trước

Tìm hiểu về Web Scraping Bot là gì ?

Bot là một phần mềm thực hiện nhiệm vụ tự động trên Internet, thông thường là các công việc đơn giản, có tính lặp lại cao như thu thập dữ liệu máy tìm kiếm, theo dõi website, lấy dữ liệu web, đo tốc độ trang và hiệu suất API. Bot cũng thường được sử dụng tự động quét mạng và website nhằm tìm kiếm ...

Trần Trung Dũng viết 14:04 ngày 18/09/2018

Code ví dụ JSON Web Token cho RESTful API với Spring Security JWT

Code ví dụ JSON Web Token cho RESTful API với Spring Security JWT Nguồn: https://stackjava.com/spring/code-vi-du-json-web-token-voi-spring-security-jwt.html Code ví dụ JSON Web Token với Spring Security JWT. JSON Web Token (JWT) là một chuẩn mở (RFC 7519) xác định một cách nhỏ gọn, khép kín ...

Trịnh Tiến Mạnh viết 17:28 ngày 12/08/2018

Tại sao phải sử dụng JSON Web Token (JWT) để bảo mật API

Giới thiệu Trước khi tìm hiểu bài này , các bạn hãy xem qua bài viết JWT là gì ? trước đó mình có chia sẻ nhé. Như chúng ta đã biết trong API thì Client giao tiếp và gửi request (yêu cầu) đến Server thông qua URL trên giao thức HTTP , ví dụ ta có 2 yêu cầu // [GET] ...

Tạ Quốc Bảo viết 16:37 ngày 12/08/2018

JSON Web Token (JWT) là gì ?

Giới thiệu Trong bài viết này mình cùng tìm hiểu khái niệm JSON Web Token (JWT) là gì , trước tiên hãy xem giải thích theo lý thuyết được định nghĩa bởi RFC 7519 JWT là một phương tiện đại diện cho các yêu cầu chuyển giao giữa hai bên Client - Server , các thông tin trong chuỗi JWT được ...

Tạ Quốc Bảo viết 16:36 ngày 12/08/2018
0