Thu thập câu hỏi về JSON Web Token (JWT)

Hi all
Mình đang tìm hiểu về Json Token Web (JWT). Để củng cố kiến thức và hiêu rõ về phần này, mình muốn xin mỗi người một (hoặc một vài) câu hỏi về JWT. Mình sẽ tìm hiểu và trả lời theo hiểu biết của mình, mong mọi người góp ý. :smiley:

3 Likes

Mình đang lấn cấn vụ này. Cho mình hỏi là khi access token hết hạn thì sẽ gửi refresh token lên server lấy access token mới. Vậy server trong trường hợp này có trả về refresh token mới không, hay chỉ có access token thôi?

4 Likes

Mình k hiểu ý bạn refresh token mới là sao.
Theo mình hiểu thì khi access token hết hạn thì refresh có nhiệm vụ duy nhất là lấy về token mới, còn lại sẽ không có khái niệm refresh token cũ hay mới :smiley: k biết là có đúng k
#edit: refresh token lưu sở server, vì nó chỉ được dùng khi access token hết hạn, k dùng cho việc máy client yêu cầu truy cập, nên nó k gửi đi đâu cả

2 Likes

Mình không hiểu nếu refresh token lưu ở server, client không có được refresh token thì làm sao client lấy được access token mới?

Nghĩa là khi muốn cấp access token mới thì client phải gửi lên server “thứ gì đó” để chứng minh. Trong khi access token thì hết hạn mà refresh token lưu trên server thì làm sao chứng minh được?

3 Likes

Về phần này thì mình chưa rõ. Nhưng trên thực tế, mình test api refresh token thì server sẽ yêu cầu gửi kèm access token cũ để xác thực, đúng thì sẽ cấp lại access token mới, còn sai thì sẽ lỗi 401 - Unauthorized

3 Likes

Sau khi tìm hiểu thì mình trả lời câu hỏi đầu tiên của mình như sau.

Chỉ có access token mới được cấp lại. Còn refresh token khi hết hạn cần thực hiện đăng nhập lại từ đầu.

5 Likes

Có một số hệ thống quan trọng mà việc bắt người dùng đăng nhập lại có thể ảnh hưởng lớn đến người dùng, thậm chí mất tiền thì sao?

JWT hoặc động như thế nào? Các thành phần của 1 JWT?

1 Like

Bạn có thể mô tả rõ hơn về hệ thống bạn đề cập đến được không?

2 Likes
  1. nên lưu trữ gì vào jwt.
  2. jwt thực hiện xác thực như thế nào
  3. jwt có mục đính là gì
  4. giữa jwt và 1 chuỗi session id ngẫu nhiên thì cái nào lợi hơn. và nên xài cái nào và khi nào
  5. có cách nào ngoài jwt không
1 Like

JWT hoạt động theo luồng sau:

  1. User thực hiện login bằng cách gửi email/password cho Server xác thực
  2. 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.
  3. Sau khi nhận lại được response, User sẽ dùng jwt gắn vào header của request để có quyền truy cập các tài nguyên.
  4. 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.

JWT bao gồm 3 phần chính: header, payload và signature

  • header chứa loại token và thuật toán dùng dể mã hóa
  • payload chứa các nội dung thông tin (người phát hành, thời gian phát hành, thời gian hết hạn,…)
  • signature (chữ ký): là phần kết hợp header+payload lại rồi mã hóa bằng một thuật toán encode nào đó, càng phức tạp càng tốt.
1 Like
  1. câu hỏi này mình không có câu trả lời chính xác về việc nên lưu những cái gì.
  2. cách xác thực mình đã trình bày ở trên
  3. jwt nên dùng nhất là cho việc xác thực người dùng, xác thực api ( giả dụ bạn có 1 api xem danh sách người dùng phía backend, không may người khác biết được api đó, bạn làm thế nào để chỉ những người được phép mới xem được api đó? - lúc này jwt sẽ làm việc này)
  4. hầu hết các ứng dụng ngày nay đã chuyển sang dùng token, session gây tốn bộ nhớ server ( ví dụ cả nghìn người đăng nhập). Tuy nhiên dùng jwt cần cẩn thận hơn vì có chứa nhiều thông tin người dùng hơn (nên lưu ở cookie httponly thay vì local storage và nên gửi kèm https)
  5. ngoài jwt có passport token, Oauth, Openid connect

1/ vì jwt có mang thông tin trong token nên đừng lưu thông tin nhạy cảm là được (như mật khẩu)
4/ vậy nếu session id ở đây ko được lưu ở server, chỉ lưu ở db giống như jwt. đóng vai trò như 1 auth token thì như thế nào?

1 Like

A post was merged into an existing topic: Topic lưu trữ các post off-topic - version 3

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?