Làm sao biết được Access Token bị sửa hay chưa ?
Em vừa trải qua một buổi phỏng vấn và được hỏi tới vấn đề OAuth2. Trong các câu hỏi có câu hỏi như sau: "Em hãy cho biết làm sao biết được Access Token bị sửa hay chưa ?". Và em bị rớt do câu này. Sau buổi phỏng vấn em có tìm kiếm trên mạng câu trả lời nhưng chưa tìm thấy đáp án mong muốn (có lẽ do em tìm sai cách).
Em mong mọi người giúp em giải đáp câu hỏi này. Em cảm ơn
2 CÂU TRẢ LỜI
Đầu tiên cần phải xác định access_token nó là kiểu gì:
- nếu là JWT thì ko cần lưu, check HMAC signature = secret key của server là ok (các thông tin khác thì đã encoded có sẵn trong access token rồi)
Về JWT Tokens thì bạn có thể đọc thêm tại https://auth0.com/docs/tokens/json-web-tokens/validate-json-web-tokens
Với JWT Tokens thì sẽ có thể tồn tại nhiều access_token
- nếu là dạng khác (string) thì phải lưu DB, kèm metadata: exp time, issuer, vân vân, cái này sẽ check phía bên server, thường là post token lên để server check rồi trả về thông tin cần thiết (validate tại db trên server)
Ở dạng này thì thường sẽ có 1 hoặc nhiều hơn 1 access_token, tuỳ theo phía đằng sau server xử lý kiểu gì
Bạn có thể đọc thêm tại
bạn đọc cấu trúc jwt sẽ có phần Signature. Phần này để validate
Bạn dùng public key để check nếu mã hóa rsa còn hmac thì dùng mã bí mật