How does JWT work?

WHAT

  • JWT - JSON Web Token là 1 loại secure token, dùng để trao đổi thông tin giữa các systems/ applications.
  • Signed by private key/ public key pair bye the Identity Provider.
  • Mục đích của JWT không phải là để hide data, mà là để ensure the authenticity of the data. JWT is signed and encoded, not encrypted.
  • JWT is a token based stateless authentication mechanism. Nó là Client-side based stateless session, server không cần thiết phải lưu trữ session information.

WHEN

  • Authorization: Mỗi request sẽ bao gồm JWT, server đọc JWT để cho phép user truy cập vào routes, services, resources, … tương ứng.
  • Information Exchange: Trao đổi thông tin, vì thông tin qua JWT thì không thể bị fake được.

HOW

  • JWT gồm 3 parts: header.payload.signature

    • HEADER: Type of token và thuật toán sử dụng để tạo chữ kí.
    • PAYLOAD:
      • Nội dung tin nhắn được gửi. Ví dụ:
        1. Issuer(iss)
        2. Subject (sub)
        3. Audience (aud)
        4. Expiration time (exp)
        5. Issued at (iat)
      • Do not put large data in claim sets. Claim sets meant to be compact. 
      • Do not put sensitive informations since, JWT can be decoded easily.
    • SIGNATURE: Secret code để chắc chắn là không ai có thể thay đổi tin nhắn. Được tạo ra bởi secret key. Chỉ có IdP mới có private key để tính toán signature.
  • Khi nhận được tin nhắn, người nhận sẽ:

    • Đọc HEADER để biết loại token và cách để decode nó.
    • Sử dụng Secret key để verify lại SIGNATURE, ensure là data chưa bị thay đổi.
    • Đọc tin nhắn.