Xác thực API: API Keys so với JWT so với OAuth 2.0
Tôi đã từng phát hành một API mà không có xác thực. Tôi cứ ngỡ đó chỉ là một công cụ nội bộ đơn giản. Hai tuần sau, một bot của đối thủ cạnh tranh đã quét sạch cơ sở dữ liệu của chúng tôi vào lúc 3 giờ sáng. Sai lầm đó đã khiến tôi mất 1.200 USD tiền hóa đơn AWS và một cuộc nói chuyện đầy gượng gạo với sếp.
Xác thực không hề thú vị. Nhưng nếu bạn làm sai, nó sẽ đánh thức bạn dậy lúc 3 giờ sáng bằng một thông báo cảnh báo.
Dưới đây là cách để lựa chọn giữa ba mô hình chính.
- API Keys Đây là những chuỗi ngẫu nhiên dài. Client gửi chúng kèm theo mỗi yêu cầu. Chúng đơn giản và nhanh chóng.
Sử dụng cho: • Các API công khai như dữ liệu thời tiết hoặc chứng khoán. • Giao tiếp giữa máy chủ với máy chủ (server-to-server). • Tạo bản mẫu (prototyping) cho một ý tưởng mới. • Các microservices nội bộ.
- JWT (JSON Web Tokens) Đây là các token đã được ký. Chúng mang theo thông tin người dùng và quyền hạn ngay bên trong chính token đó. Bạn không cần phải truy vấn cơ sở dữ liệu để xác thực chúng.
Sử dụng cho: • Các microservices mà mỗi dịch vụ tự xác thực chính nó. • Các ứng dụng di động và ứng dụng trang đơn (single page applications). • Các API có lưu lượng truy cập cao cần khả năng mở rộng.
Cảnh báo: Đừng đưa quá nhiều dữ liệu vào một JWT. Hãy giữ nó nhỏ gọn. Chỉ nên bao gồm ID người dùng và các vai trò (roles).
- OAuth 2.0 Đây là một giao thức để ủy quyền. Nó cho phép người dùng cấp quyền truy cập vào dữ liệu của họ mà không cần chia sẻ mật khẩu. Hãy nghĩ đến tính năng "Đăng nhập bằng Google".
Sử dụng cho: • Tích hợp bên thứ ba. • Các hệ thống mà người dùng cấp các quyền cụ thể cho các ứng dụng khác nhau. • Phần mềm doanh nghiệp.
Tránh sử dụng cho: • Các API nội bộ đơn giản. • Các nhóm nhỏ cần ra mắt sản phẩm nhanh chóng.
Hướng dẫn quyết định nhanh:
• API công khai: Sử dụng API Keys. • Microservices nội bộ: Sử dụng API Keys. • Backend ứng dụng di động: Sử dụng JWT. • SaaS có các vai trò người dùng: Sử dụng JWT. • Truy cập bên thứ ba: Sử dụng OAuth 2.0.
Kinh nghiệm của tôi:
- Bắt đầu với API Keys cho các dịch vụ nội bộ.
- Thêm JWT khi bạn cần xác thực người dùng.
- Chỉ sử dụng OAuth 2.0 khi khách hàng yêu cầu hoặc khi bạn xây dựng một nền tảng (platform).
Đừng xây dựng một hệ thống hoàn hảo nhưng không bao giờ được ra mắt. Hãy xây dựng một hệ thống bảo mật và hoạt động hiệu quả.
Bạn đang sử dụng mô hình xác thực nào? Hãy cho tôi biết dưới phần bình luận.
Nguồn: https://dev.to/sirmax/api-authentication-in-2026-api-keys-vs-jwt-vs-oauth-20-when-to-use-what-h7c
