[basic-authentication] HTTP 기본 인증-예상되는 웹 브라우저 환경은 무엇입니까?

서버가 기본 HTTP 인증을 통한 액세스를 허용 하면 웹 브라우저에서 어떤 경험이 예상 됩니까?

웹 브라우저를 잠시 무시하고 다음을 사용하여 기본 인증 요청을 작성하는 방법은 curl다음 과 같습니다.

curl -u myusername:mypassword http://somesite.com

그러나 웹 브라우저에서는 어떻습니까? 일부 웹 사이트에서 본 것은 URL을 방문한 다음 서버가 응답 코드 401을 반환한다는 것입니다. 그런 다음 브라우저는 사용자 이름 / 암호 프롬프트를 표시합니다.

그러나 somesite.com에서 인증 프롬프트가 표시되지 않고 승인되지 않았다는 페이지 만 표시됩니다. 어떤 사이트가 기본 인증 워크 플로우를 올바르게 구현하지 않았습니까? 아니면 다른 조치가 필요합니까?



답변

모든 사람이 혼란을 피할 수 있도록 질문을 두 부분으로 재구성 할 것입니다.

첫 번째 : “BASIC 인증을 사용하여 브라우저에서 인증 된 HTTP 요청을 작성하는 방법” .

브라우저에서 프롬프트가 표시 될 때까지 기다리거나이 형식을 따르는 경우 URL을 편집하여 http 기본 인증을 먼저 수행 할 수 있습니다. http://myusername:mypassword@somesite.com

주의 : 명령 행과 curl이 설치되어 있다면 질문에서 언급 된 curl 명령은 완벽하게 좋습니다. 😉

참고 문헌 :

또한 CURL 매뉴얼 페이지 https://curl.haxx.se/docs/manual.html 에 따르면

HTTP

  Curl also supports user and password in HTTP URLs, thus you can pick a file
  like:

      curl http://name:passwd@machine.domain/full/path/to/file

  or specify user and password separately like in

      curl -u name:passwd http://machine.domain/full/path/to/file

  HTTP offers many different methods of authentication and curl supports
  several: Basic, Digest, NTLM and Negotiate (SPNEGO). Without telling which
  method to use, curl defaults to Basic. You can also ask curl to pick the
  most secure ones out of the ones that the server accepts for the given URL,
  by using --anyauth.

  NOTE! According to the URL specification, HTTP URLs can not contain a user
  and password, so that style will not work when using curl via a proxy, even
  though curl allows it at other times. When using a proxy, you _must_ use
  the -u style for user and password.

두 번째로 중요한 질문은 “그러나 somesite.com에서 인증 프롬프트가 표시되지 않고 승인되지 않았다는 페이지입니다. 어떤 사이트가 기본 인증 워크 플로우를 올바르게 구현하지 않았거나 무언가가 있습니까?” 그렇지 않으면해야합니까? “

curl 문서에 따르면이 -u옵션은 많은 인증 방법을 지원하며 기본은 기본입니다.


답변

당신은 시도 했습니까?

curl somesite.com --user username:password


답변

브라우저에 오래된 유효하지 않은 사용자 이름 / 암호가 캐시되어있을 수 있습니다. 지우고 다시 확인하십시오.

IE를 사용 중이고 somesite.com이 인트라넷 보안 영역에 있으면 IE가 Windows 자격 증명을 자동으로 보낼 수 있습니다.


답변

WWW 인증 헤더

서버가 401 응답 코드를 보내지 만 WWW-Authenticate 헤더를 올바르게 설정하지 않은 경우에도이를 얻을 수 있습니다 .VB 앱이 인증 프롬프트를 표시하지 않았기 때문에 자체 코드로 수정했습니다.


답변

요청 헤더에 자격 증명이 제공되지 않은 경우 다음은 IE가 사용자에게 자격 증명을 요구하고 요청을 다시 제출하는 데 필요한 최소 응답입니다.

Response.Clear();
Response.StatusCode = (Int32)HttpStatusCode.Unauthorized;
Response.AddHeader("WWW-Authenticate", "Basic");


답변

Postman을 크롬 용 플러그인으로 사용할 수 있습니다. 각 요청에 필요한 인증 유형을 선택할 수 있습니다. 해당 메뉴에서 사용자 및 비밀번호를 구성 할 수 있습니다. Postman은 자동으로 구성을 인증 헤더로 변환하여 요청과 함께 전송합니다.


답변