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 chấm.
Khi nào nên sử dụng JWT ?
- Bảo mật (Authorization): Đây là tình huống mà chúng ta hay sử dụng tới JWT nhất. Khi mà người dùng đăng nhập vào hệ thống, với mỗi yêu cầu sử dụng các tài nguyên, các service, đường dẫn của ứng dụng đó sẽ đều cần sử dụng JWT để xác thực quyền truy cập đến những tài nguyên đó. Single Sign On (Đăng nhập 1 lần) là tính năng của JWT được sử dụng phổ biến vì chi phí thấp và khả năng tái sử dụng của nó trên các domain khác nhau.
- Trao đổi thông tin (Information Exchange): JSON Web Token là một cách tốt để trao đổi thông tin giữa các bên với nhau.
Cấu trúc của JWT
- Header
- Payload
- Signature
Làm thế nào để sử dụng JWT ?
Trong bảo mật, khi người dùng đăng nhập thành công vào hệ thống, ứng dụng sẽ trả về một đoạn JWT. Và người dùng muốn sử dụng đoạn JWT đó để có thể truy cập tài nguyên của ứng dụng thì người dùng cần gửi đoạn JWT đó vào trong Header của mỗi request với thuộc tính Authorization và sử dụng Bearer và nội dung của header sẽ có dạng như sau:
Authorization: Bearer <token>
Cách hoạt động của JWT
- User thực hiện login bằng cách gửi id/password hay sử dụng các tài khoản mạng xã hội lên phía Authentication Server (Server xác thực)
- Authentication Server tiếp nhận các dữ liệu mà User gửi lên để phục vụ cho việc xác thực người dùng. Trong trường hợp thành công, Authentication Server sẽ tạo một JWT và trả về cho người dùng thông qua response.
- Người dùng nhận được JWT do Authentication Server vừa mới trả về làm “chìa khóa” để thực hiện các “lệnh” tiếp theo đối với Application Server.
- Application Server trước khi thực hiện yêu cầu được gọi từ phía User, sẽ verify JWT gửi lên. Nếu OK, tiếp tục thực hiện yêu cầu được gọi.