ESP32 Web Server với Xác Thực Cơ Bản
ESP32 - Web Server với Xác Thực Cơ Bản
Ví dụ này minh họa cách tạo một web server bảo mật với HTTP Basic Authentication trên ESP32 sử dụng thư viện DIYables_ESP32_WebServer.
Phần Cứng Cần Thiết
| 1 | × | mô-đun phát triển ESP-WROOM-32 | ||
| 1 | × | Alternatively, ESP32 Uno-form board | ||
| 1 | × | Alternatively, ESP32 S3 Uno-form board | ||
| 1 | × | USB Cable Type-A to Type-C (for USB-A PC) | ||
| 1 | × | USB Cable Type-C to Type-C (for USB-C PC) | ||
| 1 | × | (Khuyến nghị) Screw Terminal Expansion Board for ESP32 | ||
| 1 | × | (Khuyến nghị) Breakout Expansion Board for ESP32 | ||
| 1 | × | (Khuyến nghị) Power Splitter for ESP32 |
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | ||
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Tính Năng Được Trình Diễn
- ✅ HTTP Basic Authentication
- ✅ Bảo vệ tên đăng nhập và mật khẩu
- ✅ Hộp thoại đăng nhập tích hợp trong trình duyệt
- ✅ Kiểm soát truy cập bảo mật
- ✅ Thiết lập xác thực đơn giản
- ✅ Tương thích ngược (xác thực tùy chọn)
Sơ Đồ Mạch
Không cần kết nối thêm - ví dụ này chỉ sử dụng LED tích hợp và chức năng WiFi của ESP32.
Ví Dụ Code
Cách Hoạt Động
1. Thiết Lập Xác Thực
Ví dụ này kích hoạt HTTP Basic Authentication với:
2. Bảo Vệ Tự Động
Một khi xác thực được kích hoạt, tất cả các route đều được bảo vệ tự động. Người dùng phải cung cấp thông tin đăng nhập hợp lệ để truy cập bất kỳ trang nào.
3. Tích Hợp Trình Duyệt
Khi người dùng truy cập web server:
- Trình duyệt hiển thị hộp thoại đăng nhập
- Người dùng nhập tên đăng nhập và mật khẩu
- Thành công: Trang tải bình thường
- Thất bại: Trang 401 Unauthorized được hiển thị
4. Lưu Trữ Thông Tin Đăng Nhập
Trình duyệt lưu cache thông tin đăng nhập cho phiên làm việc, vì vậy người dùng không cần đăng nhập lại nhiều lần.
Cân Nhắc Về Bảo Mật
✅ Phù Hợp Cho:
- Mạng gia đình và môi trường đáng tin cậy
- Thiết bị IoT nội bộ
- Phát triển và tạo nguyên mẫu
- Dự án giáo dục
⚠️ Hạn Chế:
- Thông tin đăng nhập được mã hóa Base64, không được mã hóa
- Không hỗ trợ HTTPS (hạn chế của nền tảng ESP32)
- Chỉ một cặp tên đăng nhập/mật khẩu duy nhất
- Không phù hợp cho việc sử dụng sản xuất trên mạng công cộng
🔒 Thực Hành Tốt Nhất:
- Thay đổi thông tin đăng nhập mặc định ngay lập tức
- Chỉ sử dụng trên mạng đáng tin cậy
- Cân nhắc bảo mật mạng bổ sung (VPN, firewall)
- Đối với ứng dụng bảo mật cao, thêm các lớp xác thực bổ sung
Kiểm Tra Xác Thực
- Upload code lên ESP32 của bạn
- Mở Serial Monitor để xem địa chỉ IP
- Truy cập địa chỉ IP trong trình duyệt web
- Hộp thoại đăng nhập xuất hiện - nhập thông tin đăng nhập:
- Tên đăng nhập: admin
- Mật khẩu: esp32
- Trang thành công tải sau khi xác thực
Tùy Chọn Tùy Chỉnh
Thay Đổi Thông Tin Đăng Nhập
Realm Tùy Chỉnh
Vô Hiệu Hóa Xác Thực
Kiểm Tra Trạng Thái Xác Thực
Tương Thích Ngược
Xác thực được vô hiệu hóa theo mặc định, do đó code hiện có tiếp tục hoạt động mà không cần thay đổi. Chỉ kích hoạt xác thực khi cần thiết:
Khắc Phục Sự Cố
Trình Duyệt Liên Tục Yêu Cầu Thông Tin Đăng Nhập
- Kiểm tra lỗi chính tả trong tên đăng nhập/mật khẩu
- Xóa cache/cookies của trình duyệt
- Xác minh thông tin đăng nhập khớp chính xác
Không Thể Truy Cập Bất Kỳ Trang Nào
- Xác thực bảo vệ TẤT CẢ các route khi được kích hoạt
- Sử dụng server.disableAuthentication() để kiểm tra
- Kiểm tra đầu ra Serial cho các thông báo xác thực
Xác Thực Không Hoạt Động
- Đảm bảo enableAuthentication() được gọi sau server.begin()
- Xác minh thông tin đăng nhập trong giới hạn độ dài (tối đa 31 ký tự)
- Kiểm tra các ký tự đặc biệt trong mật khẩu
Ví Dụ Liên Quan
- Ví Dụ Web Server - Web server đa trang cơ bản
- Web Server với Query Strings - Nội dung động với tham số
- Web Server với WebSocket - Giao tiếp thời gian thực
Tài Liệu Tham Khảo
- Tài Liệu Authentication - Tham khảo xác thực đầy đủ
- DIYables_ESP32_WebServer Library Reference - Tài liệu API đầy đủ