Tổng Quan Về Token

Post Reply
haihoang
Posts: 7
Joined: Fri Apr 19, 2019 10:49 am

Tổng Quan Về Token

Post by haihoang »

Nội dung bài viết
  • Token là gì?
  • Token được lưu ở đâu?
  • Token gửi từ client theo cách nào?
  • Sử dụng token cần xem xét những gì?
  • Refresh Token là gì?
Làm rõ khái niệm token, refresh token là gì? Token là gì? Authentication là gì? Session, cookies, SessionId..

1.Token là gì

- Token chính là một thông tin rất cần thiết hay còn gọi là công cụ để truy cập giao diện tài nguyên (API)

- Token bao gồm những gì (Chút nữa tôi sẽ nói rõ hơn cuối bài): uid (danh tính duy nhất của người dùng), thời gian (dấu thời gian của thời gian hiện tại), ký hiệu (chữ ký, một vài chữ số đầu tiên của token được nén thành một chuỗi thập lục phân có độ dài nhất định bằng thuật toán Hashing hay còn gọi là băm)

- Tại sao lại sử dụng token

Server không trạng thái và khả năng mở rộng tốt
Hỗ trợ cho thiết bị di động rất tốt về vấn đề get resource
Bảo mật
Hỗ trợ các cuộc gọi chéo tên miền hay application - Ví dụ: nếu ứng dụng được triển khai trên a.com, dịch vụ api được triển khai trên b.com và yêu cầu ajax được gửi từ a.com đến b.com.

Notes:
+ Server không trạng thái chính là không có bộ nhớ để xử lý giao dịch và phía server không lưu bất kỳ thông tin phiên nào mỗi khi client request và server response. Giống như bạn đang đọc bài này, không cần phải cho đi và server cũng không cần check bạn là gì?

- Quá trình xác thực token hay còn gọi là Authentication token
- Mỗi yêu cầu cần mang token và token cần được đặt trong header HTTP ????
- Xác thực người dùng dựa trên token là phương thức xác thực không trạng thái trên Server. Server không cần lưu trữ dữ liệu token. Do đó giảm áp lực cho Server và giảm query liên tục và thường xuyên dưới Database.
- Token được quản lý hoàn toàn bởi ứng dụng, vì vậy nó có thể bỏ qua CORS.

2.Token được lưu ở đâu?

Thường thì khi client được return về token thì sẽ lưu ở hai chỗ phổ biến đó là Cookies và localStorage. Ngoài ra còn có sessionstorage và indexDB nhưng sessionstorage và indexDB thì tôi ít thấy và theo tôi không nên sử dụng.

3.Token gửi từ client theo cách nào?

Cách 1:
Đặt trên header HTTP mỗi khi request

Code: Select all

GET /application/v1/events
Host: api.example.com
Authorization: Bearer 
Cách 2:
Khi tên miền chéo (đọc lại trên kia), bạn có thể đặt TOKEN trong phần body data như kiểu POST.

Cách 3:
Chuyển qua URL

Code: Select all

http://www.example.com/user?token=xxxxxxx
4.Sử dụng token cần xem xét những gì?

Nếu bạn nghĩ rằng việc sử dụng cơ sở dữ liệu để lưu trữ Token sẽ khiến truy vấn mất quá nhiều thời gian, bạn có thể chọn lưu trữ trong bộ nhớ. Ví dụ: redis rất phù hợp với nhu cầu truy vấn Token của bạn.
Token được quản lý hoàn toàn bởi ứng dụng, vì vậy nó có thể bỏ qua chính sách CORS
Token có thể tránh các cuộc tấn công CSRF (vì cookie không còn cần thiết)
Điện thoại di động không hỗ trợ cookie tốt và vì vậy Token thường được sử dụng trên những ứng dụng trên mobile.


5.Refresh Token là gì?
Refresh token thực chất nó cũng chính là một token. Nhưng nó khác với Token Auth của JWT về chức năng đó là Refresh Token chỉ có một nhiệm vụ duy nhất đó là đề lấy một token mới, nêú token được cấp phát cho user hết hạn. Refresh token được cấp cho User cùng với token khi user xác thực đầu tiên nhưng thời gian của chúng khác nhau. Với token thì có thể 1 giờ, nhưng Refresh Token là có khi là 10 ngày.

Hai Hoang

Post Reply