2026년 11월 13일 금요일

Cloudflare Access 로그인 화면에 이메일 OTP 가 안 뜰 때

관리자 페이지를 Cloudflare Access 로 막고 "허용한 이메일로 일회용 코드를 받아 로그인"하게 하려 했는데, 로그인 화면에 이메일 입력란이 나오지 않았다. 정책이 아니라 로그인 수단 쪽 설정이 빠져 있었다.

증상

  • Zero Trust 에서 Self-hosted 애플리케이션을 만들고, 정책에 허용할 이메일을 넣었다.
  • 보호한 주소로 들어가면 Access 화면은 뜨는데, 이메일로 코드를 받는 선택지가 없다.

원인

Access 의 정책은 "누가 들어올 수 있는가"를 정하고, 로그인 수단(Identity provider)은 "어떻게 본인임을 증명하는가"를 정한다. 둘은 별개다. 내 계정에는 기본 로그인 수단만 등록돼 있었고, 이메일 일회용 코드(One-time PIN)는 목록에 없었다. 등록되지 않은 수단은 로그인 화면에 나올 수 없다.

해결

  1. Zero Trust 대시보드의 Integrations → Identity providers 에서 One-time PIN 을 추가한다.
  2. 애플리케이션 설정에서 "모든 로그인 수단 허용"을 끄고 One-time PIN 만 선택한다.
  3. 로그인 수단이 하나뿐이면 Instant authentication 을 켠다. 수단을 고르는 화면을 건너뛰고 바로 이메일 입력으로 간다.
  4. 정책은 Include 에 Emails 셀렉터로 허용할 주소를 나열한다.

참고로 Zero Trust 는 무료 플랜으로도 쓸 수 있었다.

서버에서 직접 테스트하기

Access 는 Cloudflare 엣지에서만 막는다. 오리진 서버 안에서는 Host 헤더만 맞춰 주면 인증 없이 응답을 볼 수 있어서, 배포 직후 동작 확인에 편하다.

curl -H 'Host: admin.example.com' http://127.0.0.1:8080/

뒤집어 말하면, 오리진이 인터넷에 직접 열려 있다면 Access 를 우회할 수 있다는 뜻이다. 오리진은 터널 뒤에 두거나 루프백에만 바인딩하고, 가능하면 앱에서 Access 가 붙여 주는 JWT 를 검증해 이중으로 막는다.

정리

Access 에서 원하는 로그인 방식이 화면에 안 보이면 정책을 들여다보기 전에 Identity providers 목록부터 확인한다. 정책은 통과 조건이고, 로그인 수단은 따로 등록해야 한다.

댓글 없음:

댓글 쓰기

반도체 주식을 보기 전에 그려 두는 지도 — 설계, 파운드리, 메모리, 장비, 소재, 후공정

"반도체주"라고 한 묶음으로 부르지만, 그 안의 회사들은 하는 일도 돈 버는 방식도 전혀 다르다. 같은 뉴스에 어떤 회사는 오르고 어떤 회사는 내리는 이유가 여기에 있다. 종목을 들여다보기 전에 머릿속에 그려 두면 좋은 지도를 정리한...