Hồi sinh BrowserID vào năm 2026: Xây dựng hệ thống định danh riêng cho ứng dụng cá nhân
Tác giả đang phát triển WKID, một nhà cung cấp định danh (IdP) dựa trên giao thức BrowserID cũ để phục vụ các ứng dụng tự chế. Giải pháp này giúp loại bỏ sự phụ thuộc vào các nền tảng lớn như Google hay Auth0, đồng thời đảm bảo tính riêng tư và nhẹ nhàng. Khác với nỗ lực thất bại của Mozilla trong quá khứ, WKID tập trung vào quy mô nhỏ, phục vụ nhu cầu cá nhân thay vì cố gắng chiếm lĩnh thị trường.
Các mô hình ngôn ngữ lớn (LLM) đã giúp các nhà phát triển dễ dàng hơn bao giờ hết trong việc biến ý tưởng thành ứng dụng thực tế. Rào cản gia nhập thấp này dẫn đến sự bùng nổ của các dự án nhỏ, "tự chế" (bespoke) chỉ dành cho cá nhân hoặc một nhóm bạn bè, gia đình thân thiết. Theo định nghĩa, phần mềm này mang tính tự do tuyệt đối, vì người dùng chính là nhà phát triển và có thể sửa đổi nó theo ý muốn.
Tuy nhiên, một lĩnh vực mà tôi vẫn gặp khó khăn là quản lý người dùng. Ngay cả khi ứng dụng được xây dựng để phục vụ nhu cầu cá nhân, tôi vẫn thường muốn chia sẻ những gì mình đang làm (do đó các giải pháp như Tailnets hoặc cổng xác thực chuyển tiếp không phù hợp). Tôi không muốn liên tục phát minh lại bánh xe quản lý người dùng cho từng dịch vụ, nhưng cũng không muốn ứng dụng thu thập giày búp bê của mình phụ thuộc vào các giá trị của Google, Auth0 hay bất kỳ tập đoàn nào khác có thể quyết định đình chỉ tài khoản của tôi bất cứ lúc nào.
Hóa ra BrowserID là một giải pháp rất phù hợp cho vấn đề này:
- Nó dựa trên liên minh theo tên miền email, và tôi kiểm soát tên miền của chính mình. Điều này có nghĩa là không có bên thứ ba nào cần can thiệp vào quy trình xác thực của tôi.
- Nó mặc định mang tính riêng tư và chống kiểm duyệt. Nhà cung cấp định danh (IdP) không nhìn thấy người dùng đang đăng nhập vào trang web nào.
- Nó sử dụng địa chỉ email làm định danh, nên tôi không cần thu thập riêng địa chỉ email và ánh xạ chúng với passkeys, định danh OIDC, v.v.
- Nó rất nhẹ nhàng cho các bên phụ thuộc (relying parties) để triển khai. Không cần đăng ký từng ứng dụng với IdP như bạn phải làm với một máy chủ tự lưu trữ tập trung như Authentik.
Quy trình hoạt động của WKID
Đối với những người chưa quen, quy trình BrowserID trông rất giống luồng OAuth:
- Một trang web hiển thị nút "Đăng nhập". Điều này khởi động quy trình BrowserID.
- BrowserID nhắc người dùng nhập địa chỉ email. Dựa trên địa chỉ đó, họ được định tuyến đến IdP của mình và đăng nhập.
- IdP cung cấp xác nhận danh tính người dùng đã được ký mật mã trở lại hộp thoại BrowserID, sau đó ký và chuyển tiếp nó đến trang web gốc.
- Trang web nhận được địa chỉ email đã xác minh, kiểm tra chữ ký và tạo phiên làm việc.
Nếu bạn rất quen thuộc với BrowserID, bạn có thể tự hỏi liệu WKID có phụ thuộc vào cookie của bên thứ ba hay không — thứ ngày càng bị chặn trên các trình duyệt. Tôi sẽ phải lệch khỏi thông số kỹ thuật để tránh điều này, nhưng tôi đã có một kế hoạch. :-)
Tại sao WKID có thể thành công khi Mozilla thất bại?
Mozilla từng gặp vấn đề "con gà và quả trứng" lớn với BrowserID. Các nhà cung cấp định danh không có động lực tham gia liên minh trừ khi đủ nhiều bên phụ thuộc sử dụng nó, và các bên phụ thuộc không muốn sử dụng nó trừ khi IdP của người dùng họ hỗ trợ nó. Mozilla đã cố gắng giải quyết bằng cách lưu trữ persona.org như một IdP dự phòng có thể xác minh bất kỳ địa chỉ email nào, nhưng vẫn không có đủ sức hút để cất cánh.
Tôi sẽ không gặp vấn đề đó, vì tôi đang thay đổi mục tiêu. Tôi không cố gắng thắng thị trường IdP toàn cầu. WKID bản thân nó là một ứng dụng tự chế cho riêng tôi. Nếu chỉ có một vài dịch vụ sở thích của tôi sử dụng nó, và chỉ cho một người dùng, đó vẫn là một chiến thắng. Nếu người khác thấy nó hữu ích và thêm nó vào dự án của họ, chúng ta có được tính liên minh như một phần thưởng.
Vì lý do này, và vì việc gửi email thực sự là một hộp Pandora đầy rắc rối (khả năng gửi, lạm dụng, uy tín), tôi hoàn toàn không có kế hoạch lưu trữ chức năng IdP dự phòng!
Điều này có nghĩa là người dùng sẽ không thể sử dụng ứng dụng của tôi trừ khi nhà cung cấp tên miền email của họ hỗ trợ WKID. Và các nhà cung cấp lớn (gmail.com, outlook.com, yahoo.com, icloud.com) sẽ không bao giờ được hỗ trợ. Đây sẽ là một giả định điên rồ đối với bất kỳ doanh nghiệp nào, nhưng hãy nhớ rằng đây là các ứng dụng tự chế. Người dùng của tôi là tôi và gia đình có email trên tên miền của tôi.
Tình trạng hiện tại của WKID
WKID vẫn đang trong giai đoạn phát triển và chưa sẵn sàng để chia sẻ rộng rãi. Các luồng đầu cuối đã hoạt động và được kiểm tra, nhưng nó cần một số tinh chỉnh về giao diện, dọn dẹp tài liệu và hướng dẫn tự lưu trữ đơn giản hơn.
Trình độ của tôi để làm việc này chủ yếu là tôi đã có sự yêu thích với BrowserID từ những ngày làm việc trên các ứng dụng truyền thông hợp nhất dựa trên địa chỉ email, XMPP và SIP (tất cả đều theo định dạng user@domain), cộng với một hoặc hai thập kỷ xây dựng web SaaS.
Nếu bạn có lời khuyên từ việc làm việc trên các dịch vụ xác thực, hoặc nếu bạn muốn thử WKID với các dự án của riêng mình, hãy liên hệ với tôi.
Cheers!

