Flow login cho SPA
FE -> BE -> Social Provider
vấn đề: localStorage
- lưu token ở localStorage là dại
- dính XSS là mất sạch token
- => không an toàn
giải pháp: BFF + HttpOnly Cookie
- FE gọi API
/auth/googlecủa BE - BE phối hợp với Social Provider lấy
code - BE tự đổi
codelấytoken(id_token, access_token) - BE verify
id_token:- Lấy Public Key (JWKS) từ Google/Provider
- Verify chữ ký (Signature) để đảm bảo token sạch
- Check Payload:
iss,aud,expvànonce
- BE tạo session riêng + set HttpOnly Cookie
- BE redirect user về lại FE
tại sao lại như vậy?
- HttpOnly: JS không đọc được => Hacker khóc thét
- SameSite=Lax: Chặn CSRF
- Frontend: Chỉ nên gọi API, không cần quản lý token/expire