반응형

인증 실행

인증이 필요한 페이지에 접근하려고 하면 서버 측은 "Authorization"라는 헤더가 브라우저의 요청에 포함되어 있는지 확인한다. 처음 접근할 때에는 "Authorization" 헤더가 없기 때문에 브라우저에 인증이 필요하다고 알린다.

알림를 받은 브라우저는 인증 대화 상자를 표시하고 입력된 사용자명과 비밀번호로 "Authorization" 헤더를 만들고 다시 Web 서버에 "Authorization" 헤더가 포함하여 요청을 보낸다.

서버 측에서는 보내온 "Authorization" 헤더를 인증하고, 인증을 통과하면 페이지를 표시하고, 인증을 통과하지 못하면 브라우저 측에 다시 인증이 필요함을 알린다. 즉, 인증 대화 상자는 서버가 표시하는 것이 아니라, 서버로 부터 알림을 받은 브라우저가 "Authorization" 헤더를 생성하기 위해 표시하고 있는 것이다.

그러면 실제로 인증 대화에 등록한 사용자명과 암호를 입력해 본다. "http://localhost/admin/admin.html"에 액세스한다. (인증의 설정에 대해서는 "기본 인증 설정 (AuthType)"를 참조한다).


인증 대화 상자가 열리므로, 비밀번호 파일에 등록된 사용자와 암호를 입력한다. 입력된 값이 암호 파일에 등록된 사용자명과 비밀번호가 맞다면 인증을 통과하고 페이지가 표시된다.


브라우저는 다른 인증이 필요한 페이지에 대한 요청을 서버에 보내는 경우에도 "AuthName"이 같다면 브라우저가 닫힐 때까지 같은 "Authorization" 헤더로 Web 서버에 요청을 하도록 되어 있다.

그러기에 동일한 영역 이름이 설정되어 인증이 필요한 페이지를 이동하게 하면 처음부터 "Authorization" 헤더가 포함되어 있어 그 인증이 통과된다. 그래서 일단 인증이 통과하면 동일한 인증이 필요한 다른 페이지를 다시 인증할 수 없음을 확인할 수 있다.


위에 페이지는 먼저 인증을 통과한 페이지와 같은 디렉토리에 있는 다른 페이지이다. 이 페이지도 같은 디렉토리에 대한 인증이 필요하지만, 이미 인증이 통과되어 "Authorization" 헤더가 포함된 상태이기에 인증을 다시 하지 않는다.

인증에 실패했을 경우

인증 대화 상자가 열려 사용자와 비밀번호를 입력하였을때, 입력이 잘못되었거나 입력된 값이 비밀번호 파일에 등록되어 있지 않는 경우에는 서버 측에서 브라우저로 다시 인증이 필요하다고 알린다. 이는 처음에 "Authorization" 헤더가 없었을 때와 동일한 동작이다. 그래서 다시 인증 대화 상자를 브라우저가 열려 새로운 "Authorization" 헤더를 포함해서 서버에 요청을 하려고 한다.

인증에 성공할 때까지 반복되지만 결국 인증을 포기하고, 대화 상자에 "취소"버튼을 클릭하면 브라우저는 인증이 필요하다는 오류 메시지를 표시하고 Web 서버에 페이지 조회 요청을 보내는 것을 포기하게 된다.


반응형

+ Recent posts