Tăng thời hạn của AT thì attacker khi chiếm đc AT sẽ có nhiều thời gian access vào resouces server hơn
Solution → giảm valid time của AT (eg. 1 hour) → khi AT expired, client app sẽ tự động gửi request đến Authorization Server để get new pair of AT và RT (cả RT cũng sẽ được cấp mới)
Attacker hoàn toàn có thể chiếm đc RT.
Các Authorization Server thường implement một cơ chế gọi là Automatic Reuse Detection để detect việc RT được reuse.
VD một scenarios như này
- Legit User (LU) có RT1 và AT1
- Malicious User (MU) đánh cắp được RT1 từ LU
- LU sử dụng RT1 để get 1 cặp RT và AT mới
- Authorization Server trả về RT2 và AT2 cho LU
- MU sau đó cũng sử dụng RT1 (đã bị đánh cắp từ trước) để get một cặp AT và RT mới → RT reuse detected
Để implement được cơ chế này thì các Authorization Server thường lưu các
token family, nghĩa là từ một
RT ban đầu sẽ có link tới các
RT đã được generate sau đó, có thể dùng linked list.
Khi
MU cố gắng sử dụng
RT1 (đã bị đánh cắp từ trước) để get một cặp
AT và
RT mới → Authorization Server sẽ check được
RT1 được sử dụng trước đó → invalidates toàn bộ tokens trong
token family hiện tại →
RT2 và
AT2 mà
LU đang sử dụng cũng sẽ bị invalidated →
LU sẽ phải thực hiện đăng nhập lại
AT chỉ là token để access vào Resources Server, còn RT sẽ tăng thêm bảo mật cho hệ thống (bằng các chế được mô tả ở trên). VD nếu dùng RT với service của Auth0 thì mình sẽ không phải tự implement cơ chế Automatic Reuse Detection vào Resource Server.
Xem tệp đính kèm 2591820