[Open Source] # 99 - Hanko: Kiến trúc hạ tầng định danh thế hệ mới với Golang, WebAuthn và Passkeys-First
Việc xây dựng một hệ thống xác thực (Authentication) hiện đại không còn chỉ đơn giản là lưu mật khẩu vào database. Với sự bùng nổ của Passkeys, WebAuthn và các tiêu chuẩn bảo mật khắt khe như GDPR, các nhà phát triển đang đối mặt với một khối lượng công việc hạ tầng khổng lồ. Hanko xuất hiện như một "vị cứu tinh", cung cấp một hạ tầng định danh (Identity Infrastructure) mã nguồn mở, giúp bạn triển khai đăng nhập không mật khẩu (Passwordless) chỉ trong vài phút.
Dưới góc độ kỹ thuật, Hanko là một Case Study mẫu mực về việc ứng dụng Golang để xử lý các giao thức bảo mật phức tạp và kỹ thuật Web Components để tạo ra các UI elements có khả năng "nhúng" vào mọi framework.
Github: https://github.com/teamhanko/hanko
🛠️ 1. Nền tảng công nghệ: Hiệu suất cao và Độ phủ rộng
Hanko được thiết kế theo mô hình Monorepo, tối ưu hóa sự phối hợp giữa backend mạnh mẽ và frontend linh hoạt:
- Lõi thực thi (Golang): Tận dụng tối đa tốc độ và tính an toàn của Go để xử lý các tác vụ ký số (Signing) và mã hóa dữ liệu. Sử dụng framework Echo để duy trì các API xác thực với độ trễ cực thấp.
- Tiêu chuẩn bảo mật (FIDO2/Passkeys): Hanko được xây dựng dựa trên lõi WebAuthn. Đây là tiêu chuẩn vàng giúp người dùng đăng nhập bằng vân tay, khuôn mặt hoặc mã PIN của thiết bị mà không cần mật khẩu.
- Hanko Elements (Preact & Web Components): Điểm độc đáo của Hanko là bộ UI được đóng gói dưới dạng Web Components. Bạn có thể nhúng thẻ
<hanko-auth>vào bất kỳ ứng dụng nào (React, Vue, hay HTML thuần) mà không lo xung đột thư viện. - Cloud-native Infrastructure: Sẵn sàng cho triển khai quy mô lớn với hỗ trợ Kubernetes và cơ chế Migration dữ liệu tự động.
🏗️ 2. Trụ cột kiến trúc: Flow-based và API-First
Kiến trúc của Hanko giải quyết bài toán "Logic xác thực rắc rối" bằng cách tiếp cận hiện đại:
- Flow API (State Machine): Backend của Hanko hoạt động như một cỗ máy trạng thái. Thay vì các endpoint rời rạc, hệ thống quản lý toàn bộ "vòng đời" của một phiên đăng nhập qua các Flows (ví dụ:
registration_flow,login_flow), đảm bảo tính chặt chẽ trong các bước xác thực đa yếu tố (MFA). - Decoupled Design: Tách biệt hoàn toàn giữa Core Logic và UI. Lập trình viên có thể dùng SDK của Hanko để tự build giao diện riêng hoặc dùng Elements có sẵn để tiết kiệm thời gian.
- Dynamic JWT Customization: Cho phép định nghĩa các "claims" trong JWT thông qua Go templates. Bạn có thể chèn động các thuộc tính của người dùng vào token mà không cần sửa code backend.
🔄 3. Workflow: Luồng đăng nhập không mật khẩu (Sequence Diagram)
Sơ đồ dưới đây mô tả cách người dùng đăng nhập bằng Passkeys (WebAuthn) thông qua Hanko:

⚡ 4. Các kỹ thuật "Pro-level" trong mã nguồn
- Security at Rest (Bảo mật dữ liệu tĩnh): Hanko mã hóa các khóa bí mật (JWK) bằng thuật toán AES-GCM 256-bit trước khi lưu vào database. Ngay cả khi hacker chiếm được database, các khóa xác thực vẫn được bảo vệ bởi một khóa Master nằm trong biến môi trường hoặc AWS KMS.
- FlowPilot Engine: Đây là bộ điều phối logic nội bộ, cho phép cấu hình các luồng xác thực phức tạp (ví dụ: Bắt buộc dùng Passkey nếu thiết bị hỗ trợ, nếu không mới dùng Email) thông qua file cấu hình YAML đơn giản.
- Audit Logging & Masking: Hệ thống ghi log chi tiết mọi thay đổi nhạy cảm nhưng tự động ẩn danh (masking) các thông tin cá nhân (email, SĐT) để tuân thủ quy định GDPR về quyền riêng tư.
- Universal UI với Custom Elements: Bằng cách sử dụng Web Components, Hanko Elements tự đóng gói hoàn toàn CSS và Logic (Shadow DOM), đảm bảo form đăng nhập luôn hiển thị đúng thiết kế dù bạn nhúng vào bất kỳ website nào.
⚖️ 5. So sánh chiến lược
| Tiêu chí | Hanko | Auth0 (SaaS) | Firebase Auth | Keycloak |
|---|---|---|---|---|
| Quyền sở hữu dữ liệu | Tuyệt đối (Self-host) | Phụ thuộc vendor | Phụ thuộc Google | Tuyệt đối |
| Passkeys Support | Native & Ưu tiên | Có (Nhưng phí cao) | Cơ bản | Phức tạp để cấu hình |
| Trọng lượng UI | Siêu nhẹ (Web Components) | Nặng (SDK riêng) | Trung bình | Rất nặng |
| Dễ tích hợp | Cực dễ (Forms nhúng) | Trung bình | Dễ | Rất khó |
✅ Kết luận: Tại sao Hanko là hình mẫu hạ tầng xác thực?
Hanko chứng minh rằng "Xác thực an toàn không nhất thiết phải phức tạp". Dự án là sự kết hợp hoàn hảo giữa hiệu năng của Go và tư duy thiết kế tập trung vào trải nghiệm lập trình viên (DX). Việc chọn Passkeys làm trọng tâm cho thấy Hanko đang đi đúng hướng trong cuộc cách mạng xóa bỏ mật khẩu truyền thống.
Đối với các kỹ sư backend và bảo mật, nghiên cứu Hanko sẽ giúp bạn hiểu sâu về:
- Cách triển khai tiêu chuẩn WebAuthn/FIDO2 thực tế.
- Kỹ thuật quản lý trạng thái xác thực qua State Machines.
- Tư duy xây dựng Identity Infrastructure có khả năng mở rộng toàn cầu.
Hy vọng bản phân tích này mang lại cho bạn những góc nhìn mới về hạ tầng bảo mật hiện đại. Đừng quên Upvote và Follow để theo dõi những "kỳ quan" mã nguồn tiếp theo nhé!
All Rights Reserved