Auth0 Bài 2: Các khái niệm cốt lõi như Tenant, Applications, APIs, và Connections trong Auth0.
Trong hành trình xây dựng hệ thống bảo mật, việc nắm vững các thuật ngữ cốt lõi của Auth0 sẽ giúp bạn không bị bỡ ngỡ khi nhìn vào bảng điều khiển (Dashboard) chi chít các menu.
Hãy tưởng tượng bạn đang xây dựng một Tòa nhà văn phòng cao cấp. Chúng ta sẽ dùng hình ảnh này để giải thích 4 khái niệm quan trọng nhất trong Auth0: Tenant, Applications, APIs, và Connections.
1. Tenant (Không gian làm việc riêng biệt)
Tenant (Khách thuê) là khái niệm cơ bản nhất. Khi bạn tạo một tài khoản Auth0, hệ thống sẽ cấp cho bạn một "Tenant". Đây là một môi trường bị cô lập hoàn toàn, chứa toàn bộ cấu hình, dữ liệu người dùng, ứng dụng và API của riêng bạn.
- Hình ảnh ví dụ: Bạn có thể hiểu Tenant giống như một Tòa nhà văn phòng mà bạn vừa thuê. Những người ở tòa nhà A (Tenant A) không thể dùng thẻ của mình để đi vào tòa nhà B (Tenant B).
- Định dạng tên: Mỗi Tenant sẽ có một tên miền (domain) duy nhất, ví dụ:
congty-cua-ban.auth0.com. - Best Practice: Đừng bao giờ gộp chung môi trường Test và Production vào một Tenant. Bạn nên tạo ít nhất 3 Tenants khác nhau cho các môi trường thực tế:
myapp-dev.auth0.com(Cho lập trình viên thử nghiệm)myapp-staging.auth0.com(Cho đội QA kiểm thử)myapp-prod.auth0.com(Dành cho người dùng thật)
2. Applications (Ứng dụng / Client)
Applications (hay còn gọi là Clients) chính là các phần mềm mà người dùng trực tiếp tương tác. Khi người dùng muốn đăng nhập, Application sẽ là nơi "chuyển hướng" (redirect) họ sang trang đăng nhập của Auth0.
- Hình ảnh ví dụ: Trong ví dụ Tòa nhà, Application giống như Quầy lễ tân. Lễ tân là người đầu tiên tiếp đón khách và yêu cầu khách xuất trình giấy tờ tùy thân.
Auth0 chia Applications thành 4 loại chính dựa trên nền tảng công nghệ:
| Loại Ứng dụng | Mô tả & Công nghệ tiêu biểu |
|---|---|
| Single Page Web App (SPA) | Các ứng dụng chạy trên trình duyệt client-side (React, Vue, Angular). |
| Regular Web App | Các ứng dụng render từ phía server (Node.js/Express, Spring Boot, PHP, Next.js). |
| Native App | Ứng dụng di động hoặc ứng dụng desktop (iOS, Android, React Native, Flutter). |
| Machine to Machine (M2M) | Các dịch vụ tự động gọi nhau (Server gọi Server, Cronjobs), không có sự tương tác của con người. |
3. APIs (Backend / Resource Server)
Nếu Application là phần Frontend (Quầy lễ tân), thì APIs chính là phần Backend (Dữ liệu, logic nghiệp vụ) mà bạn muốn bảo vệ.
- Hình ảnh ví dụ: Trong Tòa nhà văn phòng, API giống như Căn phòng bảo mật (ví dụ: Phòng tài liệu mật, Phòng máy chủ). Lễ tân (Application) không có dữ liệu ở đó, lễ tân chỉ cấp "Thẻ từ" (Access Token) cho khách. Khách phải cầm Thẻ từ đó quẹt vào cửa Căn phòng bảo mật (API) để vào trong.
Lưu ý quan trọng:
- Auth0 không lưu trữ API của bạn (API của bạn vẫn nằm trên AWS, Vercel, hoặc server riêng).
- Khai báo API trên Auth0 chỉ đơn giản là nói cho Auth0 biết: "Tôi có một Backend tên là
https://api.myapp.com, hãy tạo ra Access Token tương thích để Backend của tôi có thể kiểm tra và cấp quyền."
4. Connections (Nguồn định danh)
Connections là cách mà Auth0 dùng để xác minh xem người dùng đó là ai.
- Hình ảnh ví dụ: Trở lại ví dụ Quầy lễ tân, Connections chính là loại giấy tờ mà lễ tân chấp nhận: Căn cước công dân, Hộ chiếu, hay Thẻ nhân viên?
Auth0 cung cấp đa dạng các "loại giấy tờ" (Connections) để bạn linh hoạt lựa chọn:
- Database Connections: Cách truyền thống. Người dùng đăng ký bằng Email và tự tạo Mật khẩu. Auth0 sẽ mã hóa và lưu trữ an toàn giúp bạn.
- Social Connections: Đăng nhập bằng tài khoản mạng xã hội có sẵn (Google, Facebook, Apple, GitHub).
- Enterprise Connections: Dành cho khách hàng B2B. Đăng nhập bằng hệ thống nội bộ của công ty họ (Microsoft Entra ID/Active Directory, Google Workspace, SAML).
- Passwordless Connections: Đăng nhập không cần mật khẩu (nhập số điện thoại để nhận mã OTP SMS, hoặc nhập email để nhận Magic Link).
🔄 Tổng kết: Các thành phần này làm việc với nhau như thế nào?
Để bạn dễ hình dung, đây là kịch bản người dùng đăng nhập vào ứng dụng của bạn:
- Người dùng mở Application (React App của bạn).
- Họ bấm "Đăng nhập". React App chuyển hướng họ đến trang login được cấu hình sẵn trong Tenant Auth0 của bạn.
- Người dùng chọn một Connection (Ví dụ: "Đăng nhập bằng Google").
- Xác thực thành công! Auth0 trả về cho Application một Access Token.
- Application gửi Access Token này kèm theo request lên API (Node.js Backend của bạn).
- API kiểm tra tính hợp lệ của Token và trả về dữ liệu (ví dụ: danh sách đơn hàng) cho người dùng.
Mọi thứ thật sự rất có hệ thống khi bạn đặt chúng cạnh nhau!
All rights reserved