Edge Authentication and Token-Agnostic Identity Propagation
Bài tóm tắt Netflix 2021 3. Quy mô lớn Độ khó: Trung bình
Netflix · 2021 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc
Medium chặn crawler; đọc toàn văn qua trình duyệt (2026-10-19), raw/ chỉ là placeholder. Bài của đội AIM (Access & Identity Management).
Bối cảnh
- Netflix bắt đầu là website quản lý hàng đợi DVD, rồi thêm streaming, rồi thiết bị (hơn 2.000 loại thiết bị). Mỗi service phục vụ thiết bị phải hiểu nhiều giao thức và nhiều loại token (cookie, MSL, token đối tác…) để biết user và thiết bị là ai.
- Luồng đăng nhập cũ: Zuul chuyển credential tới API
/login; API gọi backend xác thực rồi tạo cookie sâu trong stack và đẩy ngược lên. Hệ quả: token hợp lệ từ bên ngoài đi qua nhiều tầng, dễ bị log nhầm; tầng trên phải mở token lại và giữ nhiều cấu trúc identity song song dễ lệch nhau. - Dữ liệu identity được truyền lung tung: mở token lấy thành chuỗi, qua header context, có khi qua URL parameter, không có kiểm tra toàn vẹn.
- Quy mô (2021): hơn 200 triệu thành viên, hơn 2,5 triệu request/giây, phần lớn cần xác thực; kiến trúc cũ gọi API xác thực cho mỗi request.
- Edge đang chuyển sang PaaS: logic frontend dời sang BFF NodeQuark (JavaScript), nơi mà kết thúc giao thức phức tạp như MSL vừa khó vừa phí.
Thay đổi chính
- Đẩy xác thực ra edge: Zuul thành điểm kết thúc token và mã hoá/giải mã payload. Phần nhỏ Zuul không tự xử lý được (thiếu token, cần gia hạn, token sai) thì giao cho Edge Authentication Services (EAS), một bộ service theo từng loại token (MSL, cookie…). EAS là chuỗi filter trong Zuul: filter inbound kiểm token, filter Passport Injection tạo identity, filter outbound sinh token trả về thiết bị.
- Token không đi qua ranh giới edge: mọi token bị mở ở edge; bên trong chỉ có identity trung lập với loại token.
- Passport: cấu trúc identity protobuf, sống trong một request, chỉ dùng nội bộ, chứa thông tin user và thiết bị, mỗi phần có HMAC (SHA-256) riêng kèm tên khoá và version. Có
Source(cookie, MSL, token đối tác…) vàPassportAuthenticationLevel(LOW: kênh không tin cậy; HIGH: token an toàn qua TLS; HIGHEST: MSL hoặc credential user). Service dùng thư viện Passport Introspector để kiểm toàn vẹn và đọc trường. - Passport Action: service phía sau báo ngược khi identity thay đổi (ví dụ đăng nhập thành công) để EAS tạo hoặc cập nhật token. Luồng đăng nhập mới: Zuul tạo Passport gắn với thiết bị → API → mid-tier xác thực → trả Passport Action → Zuul gọi Cookie Service sinh cookie.
- Chịu lỗi: cookie hợp lệ nhưng hết hạn mà gọi gia hạn tới EAS lỗi hay chậm thì filter nới lỏng, vẫn truyền identity đã giải và hẹn gia hạn ở request sau.
- Kết quả trên API service chính: CPU mỗi request giảm 30%, load average giảm 40%, latency trung bình giảm 30%, p99 giảm 20%, GC giảm rõ; MSL chỉ còn giải mã một lần mỗi request thay vì hai.
- Tiếp theo (2021): MFA chọn lọc theo mô hình ML cho kết nối đáng ngờ (service Resistor); chiến lược phân quyền sản phẩm PACS dựa trên identity đã xác minh.
Vì sao
- Theo Netflix: gom việc xử lý token về một đội chuyên môn giảm độ phức tạp cho chủ service, tăng bảo mật và dễ audit, truy vết (biết Passport do ai tạo, vào hệ thống ở đâu).
- Phân quyền cần biết mức tin cậy của lần xác thực; trước đây vì thế mà token ngoài phải đi sâu vào hệ. Gắn mức tin cậy vào Passport cho phép viết luật phân quyền quanh Passport thay vì nhân bản luật tin cậy ở nhiều service.
Bài học cho SWE
- Xác thực ở một chỗ (edge), truyền identity có ký vào trong; service không nên phải hiểu token bên ngoài.
- Identity truyền đi dạng chuỗi trần thì không ai biết ai đã sửa nó giữa chừng; cấu trúc có kiểm toàn vẹn giải quyết cả bảo mật lẫn debug.
- Khi phụ thuộc xác thực chậm, có thể chọn nới lỏng có kiểm soát (dùng identity đã biết, gia hạn sau) thay vì chặn request.
Liên quan
- Netflix 2016 (bối cảnh hạ tầng) · SoundCloud 2021 (BFF và chỗ đặt logic phân quyền) · Cloudflare 2025 (service trên đường phân quyền thành phụ thuộc cứng)
- Xác thực và phân quyền (authn/authz) · Nền tảng nội bộ cho service (đường ray chung)
#Edge authentication#Zuul#Identity propagation#Passport#HMAC#Protobuf#MSL#Cookie#Token termination#BFF#Authentication level#MFA
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (3)