인증이 포함된 ESP32 웹 서버 예제
ESP32 - 기본 인증 웹 서버
이 예제는 DIYables_ESP32_WebServer 라이브러리를 사용하여 ESP32에서 HTTP 기본 인증으로 보안 웹 서버를 구축하는 방법을 보여줍니다.
필수 하드웨어
| 1 | × | ESP32 ESP-WROOM-32 개발 모듈 | 쿠팡 | 아마존 | |
| 1 | × | USB 케이블 타입-A to 타입-C (USB-A PC용) | 쿠팡 | 아마존 | |
| 1 | × | USB 케이블 타입-C to 타입-C (USB-C PC용) | 아마존 | |
| 1 | × | (추천) ESP32용 스크루 터미널 확장 보드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) Breakout Expansion Board for ESP32 | 쿠팡 | 아마존 | |
| 1 | × | (추천) ESP32용 전원 분배기 | 쿠팡 | 아마존 |
시연된 기능
- ✅ HTTP 기본 인증
- ✅ 사용자 이름과 비밀번호 보호
- ✅ 브라우저 네이티브 로그인 대화상자
- ✅ 보안 접근 제어
- ✅ 간단한 인증 설정
- ✅ 하위 호환성 (인증 선택 가능)
회로도
추가 배선이 필요하지 않습니다. 이 예제는 ESP32의 내장 LED와 WiFi 기능만 사용합니다.
코드 예제
작동 방식
1. 인증 설정
다음 예제는 HTTP 기본 인증을 활성화합니다:
It looks like the content inside the code block is missing. Please provide the English text you’d like translated into Korean.
서버.인증활성화(www_username, www_password, "ESP32");
번역할 내용이 제공되지 않았습니다. 번역할 내용을 입력해 주세요.
2. 자동 보호
인증이 활성화되면, 모든 경로가 자동으로 보호됩니다. 사용자는 어떤 페이지에 접근하려면 유효한 자격 증명을 제시해야 합니다.
3. 브라우저 연동
사용자가 웹 서버를 방문할 때:
- 브라우저에 로그인 대화상자가 표시됩니다
- 사용자가 사용자 이름과 비밀번호를 입력합니다
- 성공 시: 페이지가 정상적으로 로드됩니다
- 실패 시: 401 Unauthorized 페이지가 표시됩니다
4. 자격 증명 저장
브라우저는 세션 동안 자격 증명을 캐시하므로 사용자는 반복적으로 로그인할 필요가 없습니다.
보안 고려사항
✅ 적합한 대상:
- 가정용 네트워크 및 신뢰할 수 있는 환경
- 내부 IoT 기기
- 개발 및 시제품 제작
- 교육용 프로젝트
⚠️ 제한 사항:
- 자격 증명은 암호화되지 않고 Base64로 인코딩됩니다.
- HTTPS 지원이 없습니다(ESP32 플랫폼의 한계).
- 단일 아이디/비밀번호 조합.
- 공용 네트워크에서의 생산 용도로는 적합하지 않습니다.
🔒 모범 사례:
- 기본 자격 증명을 즉시 변경하십시오
- 신뢰할 수 있는 네트워크에서만 사용하십시오
- 추가 네트워크 보안(VPN, 방화벽)을 고려하십시오
- 고보안 애플리케이션의 경우 추가 인증 계층을 도입하십시오
인증 테스트
- ESP32에 코드를 업로드
- 시리얼 모니터를 열어 IP 주소를 확인합니다
- 웹 브라우저에서 해당 IP 주소에 접속합니다
- 로그인 대화 상자가 표시됩니다 - 자격 증명을 입력합니다:
- 사용자 이름: admin
- 비밀번호: esp32
- 인증 후 성공 페이지가 로드됩니다
맞춤 설정 옵션
자격 증명 변경
아래 코드 블록에 번역할 영어 내용을 입력해 주세요.
const char* www_username = "myuser";
const char* www_password = "나의비밀암호";
번역할 영어 내용을 입력해 주세요.
사용자 정의 영역
번역할 영어 내용을 코드 블록 안에 입력해 주세요.
server.enableAuthentication(www_username, www_password, "나의 맞춤형 디바이스");
번역할 영어 텍스트를 제공해 주세요.
인증 비활성화
There is no content to translate.
server.disableAuthentication(); // 모든 경로를 공개로 설정
번역할 내용이 제공되지 않았습니다.
인증 상태 확인
번역할 영어 텍스트를 제공해 주세요.
만약 (server.isAuthenticationEnabled()) {
Serial.println("인증 활성화");
}
번역할 내용을 코드 블록에 입력해 주세요.
하위 호환성
인증은 기본적으로 비활성화되어 있습니다, 따라서 기존 코드는 수정 없이 계속 작동합니다. 필요할 때만 인증을 활성화하세요:
번역할 영어 텍스트를 입력해 주세요.
// 이전과 동일하게 작동합니다(인증 없음)
DIYables_ESP32_WebServer 서버;
server.addRoute("/", handleRoot);
server.begin("와이파이", "비밀번호");
// 인증을 활성화하려면 이 줄을 추가하세요
서버.enableAuthentication("admin", "password123");
번역할 영어 텍스트를 제공해 주세요.
문제 해결
브라우저가 계속 자격 증명을 요청합니다
- 사용자 이름/비밀번호에 오타가 있는지 확인하세요
- 브라우저 캐시와 쿠키를 지우세요
- 계정 정보가 정확히 일치하는지 확인하세요
어떤 페이지에도 접근할 수 없습니다
- 인증은 활성화되면 모든 경로를 보호합니다
- 테스트하려면 server.disableAuthentication()를 사용하세요
- 인증 메시지는 시리얼 출력에서 확인하세요
인증이 작동하지 않음
- enableAuthentication()가 server.begin() 이후에 호출되도록 합니다.
- 자격 증명의 길이가 한도 내에 있는지 확인합니다(최대 31자).
- 비밀번호에 특수 문자가 포함되어 있는지 확인합니다.
관련 예시
- Web Server Example - Basic multi-page web server
- Web Server with Query Strings - Dynamic content with parameters
- Web Server with WebSocket - Real-time communication
참고문헌
- Authentication Documentation - Complete authentication reference
- DIYables_ESP32_WebServer Library Reference - Full API documentation