6 điểm bởi GN⁺ 2025-09-28 | 5 bình luận | Chia sẻ qua WhatsApp
  • Auth.js (tên trước đây: NextAuth.js) hiện được đội ngũ Better Auth duy trì và quản lý
  • Auth.jsthư 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

 
shakespeares 2025-10-05

Phía Next.js thay đổi quá dữ dội nên cũng mệt mỏi không ít..

 
ahwjdekf 2025-09-28

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.

 
ahwjdekf 2025-09-28

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.

 
GN⁺ 2025-09-28
Ý 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

    • Tình trạng của Auth.js và NextAuth.js vốn đã không mấy lành mạnh, việc phát triển NextAuth.js v5 bắt đầu từ tháng 5/2023 nhưng vẫn cứ ở trạng thái beta, đến tháng 8/2023 thì đổi tên thành Auth.js và tháng 10 phát hành v5.0.0-beta.0, contributor chính là Balázs Orbán rời đội ngũ vào tháng 1/2025, và rốt cuộc đến giờ vẫn mắc kẹt ở beta mà chưa có bản ổn định
      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 hiểu những lo ngại này, nhưng tôi lại không nghĩ Auth.js là “thực sự miễn phí”, vì nó đã nhận được hỗ trợ từ nhiều công ty (đến mức Clerk còn đặt quảng cáo trên trang tài liệu), Better Auth ban đầu là một dự án mã nguồn mở không nhắm mục đích thương mại, nhưng việc mở rộng theo hướng thương mại diễn ra khá tự nhiên vì họ muốn giúp nhiều công ty có thể dễ dàng sở hữu hệ thống xác thực hơn, và lý do họ tiếp quản Auth.js cũng là vì đội ngũ cũ quyết định rút lui nên họ muốn tránh việc dự án bị bỏ mặc, trước đó đã có những trường hợp như Lucia khiến người ta mất niềm tin vào xác thực mã nguồn mở, nên họ muốn ngăn tình huống niềm tin sụp đổ vì dự án bị bỏ hoang thật sự
    • Auth.js đúng là hoàn toàn miễn phí, nhưng trên thực tế thì gần như đang bị bỏ mặc
    • Tôi làm ở FusionAuth và từng tài trợ cho NextAuth, ai rồi cũng phải kiếm sống và NextAuth vốn cũng là dự án nhận hỗ trợ thương mại từ các nhà tài trợ, thật ra tôi không biết chính xác số tiền tài trợ là bao nhiêu, nhưng cũng nên tham khảo các ý kiến liên quan như việc Clerk và Vercel đã ảnh hưởng đến dự án ra sao, còn về độ khó của mô hình kinh doanh mã nguồn mở thì tôi có viết chi tiết hơn trên blog cá nhân
    • Trong trường hợp này, ít nhất thì có vẻ số vốn huy động được sẽ được dùng để phát triển một giải pháp xác thực SaaS trong tương lai dựa trên dự án mã nguồn mở
  • 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

    • Tôi không biết gì cụ thể, nhưng theo kinh nghiệm của tôi thì đã từng thử chuyển sang Auth0 và thấy không ổn lắm, chỉ cần lệch tiêu chuẩn một chút là mức hỗ trợ tụt rất mạnh, và kể cả khi chạy được thì cũng không hẳn là tốt, dù vậy nếu phải thuê ngoài phần xác thực cho SaaS bên thứ ba thì Auth0 có lẽ vẫn là lựa chọn khá hơn
    • Có thể phần nào đoán được trường hợp thực tế của OpenAI qua case study chính thức của Ory
    • Tôi đang phân vân giữa AWS Cognito và Auth0, nên muốn nghe thêm trải nghiệm thực tế của mọi người xem giữa Cognito và Auth0 thì bên nào cho cảm nhận tốt hơn
    • Có vẻ OpenAI đã chuyển SSO/SAML sang WorkOS, còn xác thực người dùng phổ thông thì fork mã nguồn mở để dùng
    • Ory cũng tuyên bố họ đang được OpenAI sử dụng, nên có lẽ OpenAI đã xây dựng giải pháp bằng cách kết hợp dịch vụ của Ory với Better Auth và các thành phần khác
  • 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

    • Tôi đang tự xây một giải pháp hỗ trợ Go, JS, Rust (dùng WASM phía server), sau này còn dự định thêm Python..., có thể sẽ không hoàn thiện hay nhiều tính năng đến mức BetterAuth/OpenAuth, nhưng trải nghiệm phát triển (DX) khi cần xác thực trong dự án thì tôi thấy rất hài lòng
      GitHub decent-auth
    • Tôi cũng hoàn toàn đồng cảm, không phải là không có giải pháp xác thực cho golang (ví dụ như FusionAuth), nhưng có lẽ mọi người muốn một thư viện dễ dùng ở cấp độ framework, ăn sâu trực tiếp vào ứng dụng như devise của Rails hay mô hình người dùng của Django, trong thread trên reddit về chủ đề này cũng có giới thiệu nhiều phương án thay thế đáng tham khảo
    • Cũng có thể thử GitHub authelia/authelia
    • GitHub ory/kratos cũng là một lựa chọn tiềm năng
  • 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

    • Thực chất thì chỉ là Better Auth giả vờ duy trì Auth.js để dẫn mọi người sang Better Auth mà thôi
  • 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

    • Tôi chưa thử Clerk, nhưng nếu bỏ tiền ra mà thực sự giúp việc phát triển dễ hơn thì với một số dự án nó có vẻ rất hợp, còn Better Auth thì tôi đã thiết lập xong trong repo bare-bones của mình chỉ trong chưa đầy 1 tiếng
  • Ở 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ồi eval, 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

      1. Chúng tôi chỉ đóng Auth.js hoàn toàn khi chắc chắn người dùng hiện tại có thể chuyển sang Better Auth mà không gặp vấn đề gì (tức là chuyện đó còn xa), và rất có thể sẽ không có chuyện mọi người bị buộc phải chuyển hết
      2. Các tính năng bổ sung qua plugin là những thứ NextAuth không có, chỉ dùng thư viện lõi thôi cũng đã cung cấp gần như toàn bộ chức năng của NextAuth, và phần lớn plugin là do chính chúng tôi cung cấp, nếu muốn thì bạn có thể tự viết plugin, sao chép/chỉnh sửa, hoặc chỉ dùng các plugin do chúng tôi cung cấp, phần xử lý DB cũng được lo sẵn nên bạn có thể sở hữu hệ thống xác thực mà không cần tự viết logic
      3. Auth.js thực ra đã không còn hoạt động tích cực từ lâu rồi, và vì một cú đóng cửa đột ngột sẽ gây tổn hại nghiêm trọng đến niềm tin với hệ sinh thái xác thực mã nguồn mở nên chúng tôi mới đưa nó vào Better Auth để ngăn điều đó xảy ra, đồng thời cũng có ý thức về bài học mất niềm tin từng xảy ra với Lucia Auth
  • 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