피드로 돌아가기
Maintaining WordPress sites behind HTTP Basic auth — Playwright, urllib, and encrypted credentials
Dev.toDev.to
Backend

Playwright와 urllib 간 인증 통합으로 401 에러 및 롤백 실패 해결

Maintaining WordPress sites behind HTTP Basic auth — Playwright, urllib, and encrypted credentials

Susumu Takahashi2026년 7월 1일6intermediate

Context

HTTP Basic auth가 적용된 WordPress 사이트의 유지보수 과정에서 SSH/WP-CLI와 달리 HTTP 기반 도구들이 401 Unauthorized 응답을 받는 비대칭성 발생. 특히 urllib를 통한 상태 체크 시 401 응답이 유지될 경우, 실제 장애 상황에서도 '변화 없음'으로 판단하여 롤백 메커니즘이 작동하지 않는 심각한 결함 존재.

Technical Solution

  • get_basic_auth_tuple이라는 단일 진입점 함수를 설계하여 Playwright와 urllib가 필요로 하는 서로 다른 인증 데이터 형식을 중앙 집중식으로 생성
  • site.get(key) or '' 패턴을 도입하여 기존 JSON 설정 데이터의 하위 호환성을 보장하고 KeyError 발생 가능성을 원천 차단
  • Fernet 암호화를 적용하여 basic_auth_password를 저장 시점에 암호화하고 로드 시 복호화하는 보안 계층 구축
  • _new_context_with_auth 헬퍼 함수를 통해 Playwright의 여러 호출 지점을 단일화하여 설정 누락 가능성을 제거
  • 메인 루프 진입 시 인증 정보를 로컬 변수에 1회만 추출하여 5회 이상의 _http_status_check_stable 호출 시 일관성 있게 전달하는 구조 설계

- 동일 자격 증명을 여러 라이브러리(Playwright, urllib 등)에서 사용할 때 단일 Root 추출 함수를 정의했는가? - 신규 필드 추가 시 기존 데이터와의 하위 호환성을 위해 empty-fallback 패턴을 적용했는가? - 민감 정보 저장 시 Fernet 등 표준 암호화 라이브러리를 통한 Encryption-at-rest를 구현했는가? - 드물게 사용되는 설정 항목을 UI상에서 `<details>` 태그 등으로 분리하여 UX 복잡도를 낮췄는가?

원문 읽기