O

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

  1. FE gọi API /auth/google của BE
  2. BE phối hợp với Social Provider lấy code
  3. BE tự đổi code lấy token (id_token, access_token)
  4. 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, expnonce
  5. BE tạo session riêng + set HttpOnly Cookie
  6. 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