- Auth.js (tên trước đây: NextAuth.js) hiện được đội ngũ Better Auth duy trì và quản lý
- Auth.js là thư viện xác thực mã nguồn mở được sử dụng rộng rãi nhất trong hệ sinh thái JavaScript và đang được nhiều website nổi tiếng sử dụng
- Trước đây, việc tự triển khai xác thực và quản lý phiên gặp nhiều khó khăn, đồng thời có bất tiện là phải lặp đi lặp lại việc phát triển cùng các thành phần nền tảng ở mọi nơi
- Khi đội ngũ Better Auth nhận ra các giới hạn của Auth.js và chia sẻ tầm nhìn cho tương lai, hai dự án đã quyết định kết hợp để tiếp tục phát triển hệ sinh thái hơn nữa
- Người dùng hiện tại sẽ tiếp tục nhận được bảo trì như bản vá bảo mật, còn với các dự án mới thì khuyến nghị dùng Better Auth
Giới thiệu và thông báo
- Auth.js (trước đây được biết đến với tên NextAuth.js) hiện đã chính thức được đội ngũ Better Auth duy trì và quản lý
- Auth.js là một trong những thư viện xác thực mã nguồn mở nổi tiếng nhất trong hệ sinh thái JavaScript và đã được sử dụng trong nhiều dịch vụ như ChatGPT, Google Labs, Cal.com
Vai trò và giới hạn của Auth.js trước đây
- Trước khi được tích hợp vào Better Auth, Auth.js giúp các nhà phát triển có thể sở hữu tính năng xác thực mà không cần đầu tư quá nhiều thời gian vào tích hợp OAuth hay quản lý phiên
- Tuy nhiên, khi ứng dụng web ngày càng phức tạp và yêu cầu xác thực trở nên đa dạng hơn, các giới hạn như phải lặp lại việc phát triển các chức năng nền tảng hay thiếu khả năng mở rộng ngày càng bộc lộ rõ
- Đội ngũ trước đây cũng nhận thức được những điểm này, nhưng vì nhiều lý do vẫn chưa thể thực hiện những cải tiến mang tính căn bản
Bối cảnh sáp nhập với Better Auth
- Mục tiêu của Better Auth là tăng cường quyền sở hữu xác thực trên nhiều dịch vụ khác nhau, và tầm nhìn này cũng tương đồng với đội ngũ Auth.js
- Qua các cuộc thảo luận nội bộ, họ nhận ra rằng phương án tốt nhất là hợp nhất hai dự án thành một
- Họ hiểu rằng Auth.js hiện rất quan trọng với vô số ứng dụng, công ty và nhà phát triển, đồng thời cam kết tiếp tục cung cấp bản vá bảo mật và xử lý các vấn đề khẩn cấp
Khuyến nghị và chiến lược phát triển hệ sinh thái
- Các dự án đang sử dụng Auth.js (NextAuth.js) có thể tiếp tục dùng mà không gặp vấn đề gì
- Với các dự án mới, nếu không cần một số tính năng cụ thể — điển hình là quản lý stateless session không cần cơ sở dữ liệu — thì nên sử dụng Better Auth
- Lộ trình của Better Auth cũng có kế hoạch bổ sung các tính năng này. Thay vì phát triển trùng lặp, hệ sinh thái sẽ được hợp nhất thành một để tìm kiếm hướng phát triển tốt hơn
Migration và lời cảm ơn cộng đồng
- Với các đội ngũ đang cân nhắc migration, họ cung cấp hướng dẫn và sẽ sớm bổ sung thêm nhiều tài liệu, tư liệu hơn
- Họ gửi lời cảm ơn sâu sắc tới cộng đồng và các contributor chính đã phát triển Auth.js cho đến nay (đặc biệt là Balázs, Thang Vu, Nico Domino, Lluis Agusti, Falco Winkler)
- Họ nhấn mạnh rằng điểm khởi đầu của Better Auth chính là Auth.js, và sự kết hợp của hai dự án sẽ giúp hệ sinh thái xác thực tiến xa hơn nữa
- Mục tiêu cốt lõi vẫn không thay đổi: "quyền sở hữu xác thực thuộc về chính nhà phát triển"
5 bình luận
Phía Next.js thay đổi quá dữ dội nên cũng mệt mỏi không ít..
Nếu thứ này bất ổn đến mức này thì thay vì dùng nó, cứ dùng kiểu như Clerk sẽ tốt hơn, rồi khi có nhiều người dùng hơn thì lúc đó hãy nghiêm túc suy nghĩ về vấn đề xác thực.
Mình mới làm thử một thứ bằng auth.js cách đây không lâu mà giờ lại thay đổi nữa rồi. Mảng web đúng là rất khó chịu và mệt mỏi. Với lại mình cũng từng gửi PR vì tài liệu và ví dụ có chỗ sai, nhưng họ lại đóng theo kiểu như chẳng có vấn đề gì, nên mình khá ngỡ ngàng. Có vẻ nội bộ đội ngũ lúc đó đang vận hành không ổn lắm.
Auth.js - Thư viện xác thực cho web
Better Auth - Framework Auth toàn diện dành cho TypeScript
Ý kiến Hacker News
Better Auth đã huy động được 5 triệu USD, nên hơi đáng tiếc khi thấy một dự án hoàn toàn miễn phí bị hấp thụ vào một liên doanh thương mại
Có thể tham khảo lịch sử thay đổi, thảo luận, ghi nhận đổi tên, bản beta phát hành, lịch sử commit, thông báo trên X(Twitter)
Tôi nghe nói Auth.js đang thực sự được dùng ở ChatGPT, Google Labs, Cal.com..., nhưng tôi chưa thấy OpenAI chuyển hệ thống xác thực khỏi Auth0, nên hơi tò mò không biết đã có chuyện gì xảy ra
Framework này khiến việc xử lý xác thực trở nên dễ đến mức gần như không phải bận tâm, cấu hình cũng đơn giản và cách dùng giữa các framework khá nhất quán, nên thật may khi những ưu điểm này có vẻ sẽ tiếp tục được giữ lại
Khi ai đó hỏi Better Auth có “tốt hơn auth.js không?”, tôi đã thoáng nghĩ “thì đúng là tốt hơn mà”, và rốt cuộc đúng là đã thành như vậy
Giá mà trong Go cũng có một giải pháp xác thực tiện như thế này
GitHub decent-auth
Tôi đã dùng cả hai sản phẩm và nhìn chung đều hài lòng, nên rất vui khi thấy hai dự án hợp tác với nhau
Tôi đang dùng Clerk và thấy khá ổn, chuyện gì cũng có lời đồn nhưng trước mắt tôi chỉ muốn tập trung phát triển thôi
Ở góc độ nhà phát triển, Better Auth đơn giản là cho cảm giác tốt hơn vì nó tối đa hóa sự đơn giản
Tin này làm tôi thấy hơi tiếc, gần như có vẻ như việc phát triển thêm cho Auth.js sẽ dừng lại, tôi rất thích việc chỉ cần triển khai vài hàm đơn giản của Auth.js là có thể dùng hoàn hảo phía sau GraphQL API của mình, nhưng Better Auth lại có kiểu dữ liệu thay đổi theo từng plugin nên quá tổng quát, kiểu như TypeScript
any, hơn nữa trách nhiệm thiết kế schema cơ sở dữ liệu và chạy migration còn bị đẩy sang cho người viết plugin, tôi thấy như vậy là quá mức đối với một thư viện xác thực và không thích cấu trúc này, tất nhiên vẫn có thể tự làm adapter riêng nhưng ngay cả interface của nó cũng quá chung chung, phải triển khai một bộ thực thi truy vấn tùy ý kiểu SQL-like nên mất quyền kiểm soát trực tiếp với schema, migration cũng chỉ nhận chuỗi code rồieval, nên việc kiểm soát bảo mật cũng không hề dễTừ trước tôi đã cố không thiên kiến trước bầu không khí kiểu Better Auth được chú ý nhiều hơn vì nhà phát triển tự học hoặc còn trẻ chứ không hẳn vì sự mới mẻ kỹ thuật, nhưng có vẻ những lo ngại này cũng không phải hoàn toàn vô căn cứ, dù sao thì nó vẫn còn hơn tình trạng Auth.js bị bỏ mặc, nhưng điều đó cũng cho thấy tình trạng các thư viện xác thực mã nguồn mở trong hệ sinh thái JS đáng tiếc đến mức nào
ví dụ triển khai adapter, bài viết về nhà phát triển được TechCrunch giới thiệu
Chỉ 3 tiếng sau thông báo của Better Auth, họ đã xóa thông báo liên quan đến Vercel khỏi commit GitHub