JWTs bao gồm ba phần phân cách bằng dấu chấm, đó là (.):
Do đó, một JWT thường trông giống như sau.
xxxxx.yyyyy.zzzzz
Hãy xem một bản tóm tắt ngắn gọn theo RFC và this
Tiêu đề
Tiêu đề thường bao gồm hai phần: các loại thẻ bài, đó là JWT, và các thuật toán băm như HMAC SHA256 hoặc RSA.
{
"alg": "HS256",
"typ": "JWT"
}
Payload
Phần thứ hai của token là tải trọng, trong đó có những tuyên bố. Tuyên bố là tuyên bố về một thực thể (thông thường, người dùng) và siêu dữ liệu bổ sung. Đây là phần thú vị vì bên trong mã thông báo chúng tôi có thể kiểm tra xem bạn thuộc về ai. { "userid": "1234567890", "expiration_date": "2016-05-129" }
Khi chúng ta tạo ra một thẻ mới, chúng tôi có thể xác định các dữ liệu tải trọng sẽ chứa vì vậy chúng tôi có thể thêm userid để xác định người dùng và hết hạn để kiểm tra xem đã đến lúc yêu cầu một người mới chưa.
Chữ ký
Để tạo phần chữ ký bạn phải lấy tiêu đề mã hóa, payload được mã hóa, một bí mật, các thuật toán được quy định trong tiêu đề, và ký tên vào đó. Chữ ký được sử dụng để xác minh rằng người gửi của JWT là người mà họ nói là và để đảm bảo rằng thông báo không được thay đổi theo cách này.
Server side
Chúng ta nên giữ khóa bí mật của chúng tôi ở phía máy chủ, do đó, chúng ta có thể giải mã một tải trọng hợp lệ và kiểm tra những người dùng thuộc. Bằng cách này, chúng tôi miễn phí để tránh các mã thông báo lưu trữ, bởi vì mọi kho lưu trữ mã thông báo đều có đủ dữ liệu để xác thực người dùng của chúng tôi.
Làm thế nào đổi mới token ?: từ phía khách hàng
Quá trình này để tạo ra một thẻ mới là như nhau, do phía khách hàng nên yêu cầu một dịch vụ mới (yêu cầu HTTP như www.myhost.com/renew) và gửi mã thông báo cũ để tạo mã mới. Hãy nhớ rằng bạn có thể kiểm tra người dùng nào thuộc mã thông báo đó do đó mã thông báo gia hạn phải chứa cùng một tải trọng nhưng có ngày hết hạn khác nhau.
Đăng nhập một lần
Chúng ta có thể sử dụng JWT với chiến lược giống như single sign-on để đảm bảo chỉ có một người sử dụng với cùng một thông tin được đăng nhập cùng lúc.
Tôi cuối cùng đã tìm ra đây là một câu hỏi ngớ ngẩn. Tôi sẽ sớm trả lời nó. – Ricardo
Tôi sẽ viết câu trả lời cuối tuần này. – Ricardo