Vietnam

    Nodejs.vn

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Popular
    • Tags
    • Groups
    • Search

    JWT là gì ? Hiểu nhanh về JWT trong 5 phút !

    Tutorials
    1
    1
    187
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Văn Anh Đào
      Văn Anh Đào last edited by Văn Anh Đào

      JWT là gì ? Nó hoạt động ra sao ? Khi nào nên sử dụng JWT ? @[email protected]… Qua bài bài viết này mình sẽ giúp các bạn hiểu nhanh về nó ,cùng bắt đầu tìm hiểu nào .

      jwt16304761538232.jpeg
      JWT là gì ?
      JWT (JSON Web Token) là một chuẩn mở (RFC 7519) định nghĩa một cách ngắn gọn , khép kín để truyền thông tin một cách an toàn giữa Client-Server dưới dạng đối tượng JSON.

      Cấu tạo của JWT như thế nào ?

      Trước khi đi vào lý thuyết chúng ta có một ví dụ sau :

      eyJbGci3OiJIUzI1NiIsInR5cKI6IkpXfCJ5.eyJleHAiOjEz2DY4OTkxMzEsImlzcyI6ImppcmE6MTU0ODk3OTUiLCJxc2giOiI4MDYzZmY3K2ExZTUxZGY3YmM5MGM4YWI2KDBmNjIwN2L0OTFjZjZkYWQ3YzY2ZKE3OTdiNDYxNGI3MTkyMmU5IiwiaWF0IjoxMzg2ODk4OTUxfQ.uKqU9dTB6gKwG6jQCuXFAiMNdfNRw98Hw_IWuA5MaMo
      

      Nhìn có vẻ khá phức tạp nhưng thực ra chuỗi JSON Web Token được chia làm 3 phần :

      • Header
      • Payload
      • Signature (chữ ký )

      Và được ngăn cách bởi dấu “ . “ .

      Như vậy theo lý thuyết trên ta có cấu trúc của JWT:
      header.payload.signature

      Khi nhìn lại ví dụ trên ta có thể phân biệt rõ các phần của Token này thành 3 Object: Header ,Payload, Signature , dưới định dạng JSON được encode base64 ( mình sẽ giải thích chi tiết sau phần Signature)

      Header

      Header là phần chứa kiểu dữ liệu và thuật toán để mã hóa ra chuỗi JWT.
      Chúng ta có ví dụ sau :

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

      Với ví dụ trên ta có thể thấy :
      “typ” ( type) :cho chúng ta thấy đây là một JWT , “alg” (algorithm) :thuật toán mã hóa ra chuỗi là HS256

      Payload

      Phần này chứa các thông tin người code muốn đặt trong chuỗi Token .
      Ví dụ :

      {
        "user_name": "user123",
        "user_id": "1784382324",
        "address": "hanoi"
      }
      

      Signature

      Signature hay còn gọi là phần chữ ký , được tạo ra bằng cách mã hóa phần header và payload kèm theo một chuỗi khóa bí mật (Secret) .
      Chúng ta có ví dụ sau :

      data = base64urlEncode( header ) + "." + base64urlEncode( payload )
      signature = Hash( data, secret );
      

      base64UrlEncode :là Thuật toán mã hóa header và Payload
      Quay lại với ví dụ ở đầu bài ta dễ dang có thể thấy :

      Header :

      eyJbGci3OiJIUzI1NiIsInR5cKI6IkpXfCJ5
      

      Payload :

      eyJleHAiOjEz2DY4OTkxMzEsImlzcyI6ImppcmE6MTU0ODk3OTUiLCJxc2giOiI4MDYzZmY3K2ExZTUxZGY3YmM5MGM4YWI2KDBmNjIwN2L0OTFjZjZkYWQ3YzY2ZKE3OTdiNDYxNGI3MTkyMmU5IiwiaWF0IjoxMzg2ODk4OTUxfQ
      

      Signature :

      uKqU9dTB6gKwG6jQCuXFAiMNdfNRw98Hw_IWuA5MaMo
      

      Khi nào ta nên 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.

      Kết Luận

      Hy vọng qua bài viết này các bạn sẽ hiểu them phần nào về JSON Web Token , cảm ơn các bạn đã theo dõi bài viết của mình .

      1 Reply Last reply Reply Quote 0
      • First post
        Last post
      $(document).ready(function () { app.coldLoad(); }); }