Sign in은 언제 뜨는가?
sign-in
sign-in: 사용자에게 HTTP 인증을 요구하는 프롬프트
401 Unauthorized 발생하면 sign-in이 뜬다
401 Unauthorized 오류 발생 중 request header에 Authorization 값이 없다.
서버는 response header의 WWW-Authenticate에 인증 방식 정보를 전달해서 클라이언트에게 인증을 요구한다.
sign-in prompt에 username과 password를 입력하면
클라이언트는 request header에 Authorization의 정보를 서버에 보낸다.
인증이 성공하면 서버는 파일을 정상적으로 응답한다.
Authorization 필드에는 프롬프트에 입력한 인증 정보가 들어간다.
WWW-Authenticate: <type> realm=<realm>
type은 인증 방식이다. 보통 Basic을 쓴다. Basicdms base64로 인코딩 하라는 뜻. 다양한 scheme이 있다.
realm은 인증을 요구하는 리소스가 누구에게만 허용되는가에 대한 정보가 있다.
대략적인 인증 과정
https://developer.mozilla.org/ko/docs/Web/HTTP/Authentication
incognito mode(사생활 보호 모드)
브라우저에서는 인증 프롬프트에 입력한 ID와 password를 기억한다. 그래서 한 번 프롬프트를 입력하여 인증에 성공하면, 해당 브라우저를 종료할 때까지는 인증을 다시 요구하지 않는다.
브라우저는 사생활 보호 모드(Incognito mode)일 때 인증 프롬프트에 입력한 ID와 password를 기억하지 않는다. 그러니 매번 ID와 password를 다시 입력해야 한다.
크로미움 프로젝트: https://www.chromium.org/developers/design-documents/http-authentication/
캐시
메모리에 캐시가 있으면 인증을 요구하지 않는다
401 or 403 or 404
인증은 성공했으나 권한이 없는 경우에는 서버가 403 Forbidden을 응답한다.
서버 측에서 자세한 정보를 숨기기 위해 일괄 404 Not found를 응답하도록 설정하는 경우도 있다.
Apache HTTP Server
Apache HTTP Server에는 인증을 위한 다양한 모듈과 디렉티브가 있다.
도메인별로 인증을 요구하는 기능도 존재. 인증을 캐싱하는 기능도 존재.
https://httpd.apache.org/docs/2.4/en/howto/auth.html#socache
Google Chrome browser를 기준으로 서술.
20220222
Leave a comment