← stephenkim ops portal

Cloudflare Access Custom Pages 데모

Access의 로그인·차단 화면을 고객 브랜드에 맞게 바꾸는 기능입니다(2026-10 출시). HTML과 Liquid 템플릿으로 요청마다 앱 이름, 접속 정보, 거부 사유, Ray ID 같은 값을 넣어 서버에서 그립니다. 아래는 데모 앱 intranet.stephenkim.site에 실제로 적용한 결과입니다.

직접 체험하기

아래 주소는 실제 Cloudflare Access가 지키는 데모 앱입니다. 누구도 통과할 수 없게 설정돼 있어서, 로그인을 시도하면 항상 거부 화면까지 보게 됩니다. 브라우저 언어 설정에 따라 한국어나 영어로 나옵니다.

주소처음 보이는 화면로그인하면
access-demo.stephenkim.site ↗③ 좌우 분할 로그인① 기업 브랜드형 거부 화면
…/selfservice ↗③ 좌우 분할 로그인④ 셀프 해결 가이드형 거부 화면
…/forbidden ↗② 다크 보안 콘솔형 (403, 로그인 전에 차단)—
로그인할 때는 Google 같은 IdP 버튼을 쓰세요. 이메일 OTP는 허용된 주소에만 코드가 발송되므로, 이 데모에서는 메일이 오지 않습니다.

실제 적용 화면

데모 앱에 템플릿을 할당한 뒤 실제 응답을 캡처했습니다. 로그인 화면의 IdP 버튼과 이메일 OTP 입력칸은 Access가 <cf-access-authbox> 자리에 직접 넣습니다.

실제 로그인 화면, 한국어

LIVELogin · Accept-Language: ko-KR

브라우저 첫 언어가 한국어면 템플릿 문구가 한국어로 나옵니다. Access가 넣는 로그인 상자 안 문구("Sign in with", "Send login code")는 영어로 고정입니다.

실제 로그인 화면, 영어

LIVELogin · Accept-Language: en-US

같은 템플릿 하나에서 locale 값으로 한/영을 자동으로 바꿉니다.

실제 forbidden 화면

LIVEForbidden (403)

디바이스 포스처 같은 비-ID 조건에 걸리면 로그인 전에 이 화면이 나옵니다. 국가, WARP, Gateway 값은 실제 값입니다.

디자인 예시 4종

모두 Cloudflare validator(contract v2)에서 오류 0건으로 통과했습니다. 스크린샷은 예시 데이터(Jordan Lee)로 그린 미리보기입니다.

① 기업 브랜드형

① Identity denied · 기업 브랜드형

쓰는 값: 로그인 계정, IdP, 통과하지 못한 디바이스 점검 항목, Ray ID, 권한 요청 버튼

② 다크 보안 콘솔형

② Forbidden · 다크 보안 콘솔형

쓰는 값: 접속 국가, WARP/Gateway 연결 여부. WARP를 안 켰으면 켜라는 안내를 보여줍니다.

③ 좌우 분할 로그인

③ Login · 좌우 분할 브랜드형

쓰는 값: 앱 이름·도메인, 로그인 오류 메시지. 로그인 상자는 Access가 넣습니다(미리보기의 점선 상자는 모양만 흉내 낸 것).

④ 셀프 해결 가이드형

④ Identity denied · 셀프 해결 가이드형

실패한 규칙 종류에 따라 "MFA 다시 하기 / 디바이스 확인 / 권한 신청" 단계를 골라 보여줍니다. 정책 이름은 노출하지 않습니다. 현재 intranet 앱에 할당된 거부 화면입니다.

만드는 방법

  1. Cloudflare One → Reusable components → Custom pages → Access custom pages → Create custom page
  2. 종류 선택: login / identity_denied / forbidden / interstitial(cloudflared 승인). 만든 뒤에는 종류를 바꿀 수 없습니다.
  3. HTML + Liquid 편집 → Variables에서 쓸 수 있는 값 확인 → Problems의 오류를 고친 뒤 Publish
  4. 앱 → Additional settings → Custom block pages에서 템플릿을 할당하거나, 목록에서 Set as default로 계정 기본값 지정
  5. 대시보드에는 렌더링 미리보기가 없습니다. 테스트용 앱에 할당해서 직접 확인해야 합니다.

쓸 수 있는 것 / 없는 것

사용 팁

참고