리버스 프록시에서 사이트 전체에 게이트를 겁니다
Caputchin을 쓰는 보통 방식은 페이지에 위젯을 삽입하고 토큰을 백엔드에서 검증하는 것입니다. 그러려면 위젯을 둘 자리와 토큰을 확인할 백엔드가 필요합니다. 프록시 게이트는 둘 다 필요 없습니다. 그것은 당신의 리버스 프록시에서, 사이트나 라우트 전체 앞에 전면 검증을 놓습니다. 방문자가 게임 하나를 풀고, 짧은 수명의 패스를 얻고, 패스가 만료될 때까지 사이트를 돌아다닙니다. 보호되는 앱은 결코 건드려지지 않습니다.
앱 자체에는 아무것도 더해지지 않으므로, 이것은 스크립트를 삽입할 수 없는 호스트를 보호하는 방법입니다. 컴파일된 단일 페이지 로그인 포털, 어플라이언스, 또는 인증 프록시 뒤에 앉은 내부 도구 같은 것입니다.
누구를 위한 것인가
인라인 위젯이 맞지 않을 때 게이트로 손을 뻗으세요:
- 앱에 위젯을 둘 자리가 없음. 봉인된 로그인 포털(Authelia 같은), 벤더 어플라이언스, 또는 편집할 수 없는 어떤 UI든.
- 폼 하나가 아니라 표면 전체에 게이트를 걸고 싶음. 단일 제출에서의 확인이 아니라 "이 사이트에 닿기 전에 당신이 사람임을 증명하라".
- 토큰을 검증할 백엔드가 없음. 강제하는 건 프록시이고, 쓸
/siteverify호출이 없습니다.
당신이 통제하는 보통 페이지나 폼이라면, 대신 위젯을 삽입하세요. 그게 더 가볍고 방문자를 리디렉션하지 않습니다. 폼은 있지만 백엔드가 없다면, 호스팅 인증이 더 잘 맞습니다.
동작 방식
한 번의 풀이가 많은 요청을 삽니다. 방문자는 게임을 한 번 하고, 그다음에는 퍼스트파티 쿠키가 만료될 때까지 그의 요청을 통과시킵니다.
프록시는 모든 요청에서 Caputchin에 작은 인가자 호출을 합니다. 요청이 유효한 패스를 지니지 않으면, Caputchin은 401을 답하고 프록시는 방문자를 호스팅 챌린지로 리디렉션합니다. 패스가 있고 유효하면, Caputchin은 204를 답하고 프록시는 요청을 당신의 앱으로 통과시킵니다.
통과 쿠키
패스는 cpt_gate라는 이름의 퍼스트파티 쿠키 안에 살며, 그것은 당신이 호스팅하는 작은 콜백이 당신 자신의 도메인에 설정합니다. 서명된 짧은 수명의 토큰이고, 기기에 묶이지 않으므로, 그 안전성은 전적으로 쿠키 속성(HttpOnly, Secure, SameSite=Lax)과 당신이 고르는 짧은 TTL에서 옵니다. 그것이 당신의 방문자에게 쿠키를 설정하니, 당신의 쿠키 정책에 그것을 고지하세요. 설정 가이드가 콜백과 필요한 속성을 처음부터 끝까지 짚습니다.
일부러 빠뜨린 것
- 자체 호스팅 게이트 없음. Caputchin이 챌린지를 호스팅하고 패스를 검증합니다. 당신은 검증기를 돌리지 않습니다. 당신의 프록시는 쿠키 하나를 전달하고 리디렉션을 따를 뿐입니다.
- 요청별 확인이지, 로컬 토큰 검증이 아님. 프록시는 모든 요청에서 Caputchin에 묻습니다. 당신이 고르는 실패 모드(열림 또는 닫힘)가 Caputchin이 잠깐 닿을 수 없을 때 무슨 일이 일어날지 결정합니다.
- 사이트 키별, 쿠키 범위의 통과. 한 패스는 하나의 오리진을 통과시키지, 계정 전체나 여러 도메인은 아닙니다. 그것은 평범한 퍼스트파티 쿠키이기 때문입니다.
- 세션도 로그인도 아님. 게이트는 사람이 사이트에 닿았음을 증명합니다. 당신의 앱은 여전히 인증과 자체 속도 제한을 처리합니다. 둘은 겹칩니다.
함께 보기
- 프록시 게이트 설정하기: 활성화하고 당신의 프록시를 끝에서 끝까지 배선합니다.
- 리버스 프록시 레시피: nginx, Traefik, Caddy, 그리고 Authelia 실전 예시.
- 프록시 게이트 통계: 통과 대 챌린지 비율을 읽습니다.
- 호스팅 인증: 향할 폼이 실제로 있을 때의 백엔드 없는 선택지.