407 Proxy Authentication Required
사용법
407 Proxy Authentication Required 오류가 도착하면 클라이언트는 프록시를 통해 요청한 리소스에 접근하려면 먼저 유효한 로그인 자격 증명이 필요함을 이해합니다. 이는 401 Unauthorized 응답과 유사하며, 클라이언트는 동일한 인증 프로토콜을 사용합니다.
허용되는 방식을 알리기 위해 서버는 Proxy-Authenticate 헤더를 반환합니다.
SEO 영향
Google 같은 검색 엔진은 407 Proxy Authentication Required 상태를 반환하는 URL을 색인하지 않습니다. 이전에 색인되었다가 이 상태 코드를 반환하는 URL은 검색 결과에서 제거됩니다.
예시
클라이언트가 리소스를 요청하고, 서버는 해당 리소스가 프록시 뒤에서 보호되고 있음을 알리기 위해 407 Proxy Authentication Required로 응답합니다. 서버는 basic 인가를 지원한다고 표시합니다. 클라이언트는 Proxy-Authorization 헤더에 basic 인증 프로토콜을 사용해 username:password 쌍을 담아 응답합니다. 그러면 서버가 요청한 리소스를 전송합니다.
최초 요청
GET /documents/tech-news HTTP/1.1
Host: example.com
최초 응답
HTTP/1.1 407 Proxy Authentication Required
Proxy-Authenticate: Basic realm="Documents"
다음 요청
GET /documents/tech-news HTTP/1.1
Host: example.com
Proxy-Authorization: Basic RXhhbXBsZTphaQ==
최종 응답
HTTP/1.1 200 OK
Content-Type: application/pdf
Content-Length: 25000
<PDF document included in message body>
해결 방법
407 Proxy Authentication Required는 프록시 서버가 요청을 전달하기 전에 유효한 자격 증명을 요구한다는 뜻입니다.
응답의 Proxy-Authenticate 헤더를 확인하세요. 이 헤더는 요구되는 인증 스킴(Basic, Digest, NTLM, Negotiate)을 명시합니다. 클라이언트 설정을 기대되는 방식에 맞추세요. 브라우저 개발자 도구나 프록시를 거치는 curl -v로 이 헤더를 확인하세요.
클라이언트에 프록시 자격 증명을 설정하세요. 브라우저 프록시 설정, 애플리케이션 설정, 또는 환경 변수에 프록시 사용자 이름과 비밀번호를 지정하세요. 명령줄 도구에서는 프록시 URL에 자격 증명을 포함합니다.
export HTTP_PROXY=http://user:pass@proxy:8080
export HTTPS_PROXY=http://user:pass@proxy:8080
프로그램 방식의 HTTP 클라이언트에서는 Proxy-Authorization 헤더에 자격 증명을 포함하세요.
프록시 사용자 이름과 비밀번호를 검증하세요. 잘못되었거나 만료된 자격 증명 쌍이 이 오류를 유발합니다. 네트워크 관리자와 값을 확인하세요. NTLM과 Kerberos 프록시는 도메인에 가입된 자격 증명을 요구합니다. 도메인 접두사(예: DOMAIN\username)가 포함되었는지 확인하세요.
투명 프록시의 가로채기가 없는지 점검하세요. 일부 기업 네트워크는 클라이언트의 명시적 설정 없이 모든 트래픽을 투명 프록시로 보냅니다. VPN 연결이나 네트워크 정책 변경으로 이전에는 없던 프록시 인증이 생기기도 합니다. 시스템 프록시 설정을 확인하세요(Windows: 인터넷 옵션, macOS: 시스템 설정 > 네트워크 > 프록시, Linux: /etc/environment 또는 데스크톱 프록시 설정).
캐시된 프록시 자격 증명을 지우세요. 브라우저와 운영체제는 프록시 인증 토큰을 캐시합니다. 비밀번호를 바꾼 뒤에도 오래된 캐시 자격 증명 때문에 407이 반복됩니다. 자격 증명 캐시를 지우세요(Windows의 자격 증명 관리자, macOS의 키체인 접근).
프록시가 대상 도메인을 허용하는지 확인하세요. 일부 프록시 서버는 승인된 도메인이나 URL 카테고리로 접근을 제한합니다. 정책상 목적지가 차단된 경우, 자격 증명이 유효하더라도 프록시는 재인증을 강제하기 위해 407을 반환합니다. 네트워크 관리자와 프록시 허용 목록을 확인하세요.
프록시 접근 권한은 네트워크 관리자에게 문의하세요. 기업이나 기관의 프록시는 계정 발급이 필요합니다. 접근 자격 증명을 요청하고, 프록시 주소와 포트를 확인하며, 사용 중인 인증 스킴을 확인하세요.
코드 참고
.NET
HttpStatusCode.ProxyAuthenticationRequired
Rust
http::StatusCode::PROXY_AUTHENTICATION_REQUIRED
Rails
:proxy_authentication_required
Go
http.StatusProxyAuthRequired
Symfony
Response::HTTP_PROXY_AUTHENTICATION_REQUIRED
Python3.5+
http.HTTPStatus.PROXY_AUTHENTICATION_REQUIRED
Java
java.net.HttpURLConnection.HTTP_PROXY_AUTH
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_PROXY_AUTHENTICATION_REQUIRED
Angular
@angular/common/http/HttpStatusCode.ProxyAuthenticationRequired