2011-10-20 3 views
5

아무도 http://user:[email protected] 인증 작동 방식을 설명 할 수 있습니까? 브라우저가 user:pass이 base-64로 인코딩 된 Authorization 헤더를 보내고 있습니까?http : // user : [email protected] 인증은 어떻게 작동합니까?

크롬 개발자 도구에서 Net 콘솔을 열었습니다. 예를 들어 http://user:[email protected]과 같이 요청하면 Authorization 헤더가 추가되지 않습니다.

URL 앞에 user:[email protected]을 사용하는 경우 브라우저가 암호를 보내는 방법에 대해 정말 궁금합니다.

+3

그것은 단지 인증 헤더입니다. 나는 크롬이 그것을 어떻게하는지 모른다. 그러나 파이어 폭스에서는 사이트가 (요청에서) 인증을 요구하고 있는지 확인하고, 그렇지 않다면, "당신은 사이트에 로그인하려고한다"는 stackoverflow를 경고한다. co.kr "을 사용자 이름"user "로 지정하지만 웹 사이트에는 인증이 필요하지 않습니다. 이것은 당신을 속이려는 시도 일 수 있습니다. "stackoverflow.com"은 방문 할 사이트입니까? 그리고 [Yes]는 인증 세부 정보를 제거하거나 [No]는 요청을 중단합니다. 따라서 권한이있는 사이트가 없으면 머리글을 볼 수 없습니다. –

답변

3

헤더를 검사하려면 인증이 필요한 서버에 대해 테스트해야합니다. 클라이언트는 서버가 요구하는 인증 방법 (기본 또는 다이제스트)을 클라이언트가 알지 못하기 때문에 서버가 요청할 때까지 어떠한 Authorization 헤더도 보내지 않습니다.


HTTP 인증은 두 개의 요청으로 이루어집니다 :

는 첫째, 어떤 Authorization 헤더가없는 요청이 전송됩니다. 그런 다음 서버는 인증 방법을 클라이언트에 알려주는 WWW-Authenticate으로 응답합니다. 여기에는 영역 이름과 인증 방법이 포함됩니다 (다시 말하면 기본 또는 다이제스트)

클라이언트는 추가 Authorization 헤더와 함께 새 요청을 보냅니다. 당신이 HTTPS를 사용하지 않는

Authorization: Basic dXNlcjpwYXNz 

지금 암호, 운송 볼 수 있습니다 : basic authentication의 경우,이 헤더는 당신이 말하는 것처럼, 인코딩 단지 user:pass 64 기수입니다. 더 좋은 옵션은 digest authentication이며 WWW-AuthenticateAuthorization의 내용은 wikipedia article으로 가장 잘 설명됩니다. :)

관련 문제