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


255

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

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

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

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

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


다이제스트가 아닌 기본 인증을 사용 하시겠습니까?
b_erb

내가 base-64 인코딩인지 묻지 않는 한 차이점을 확신하지 못합니다. 내가 프로그래밍 방식으로하고 있다면 컬은 나를 위해 그것을합니다.
bpapa

WWW-Authenticate 응답 헤더 (값 : 다이제스트 또는 기본)에서 어떤 인증이 사용되는지 확인할 수 있습니다.
Kniganapolke

2
이 질문을 다시 설명해야한다고 생각합니다. 한 명 이상의 응답자가 브라우저가 아닌 컬에 대한 질문이라고 생각합니다.
LS

"권한 부여"라는 용어를 사용할 때 "인증"을 의미합니까?
Tarun

답변:


160

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

첫 번째 : "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옵션은 많은 인증 방법을 지원하며 기본은 기본입니다.


3
문제는 브라우저가 아닌 curl에 관한 것입니다.
Ray Baxter

26
curl 명령 바로 다음과 같이 질문을 완전히 읽지 않았을 수도 있습니다. "그러나 지금은 curl (긴 이야기)에 액세스 할 수 없으며 가능한 경우 웹 브라우저에서 질문하고 싶습니다. " ;)
Nicocube

3
나는 컬이 잘 작동한다는 것을 전적으로 동의한다, 나는 그것을 개인적으로 그것을 정기적으로 사용하지만, 문제는 컬에 관한 것이 아니다.
Nicocube

4
질문자는 인증 이유를 알고 싶어합니다. 브라우저에서 작동하지 않습니다. 질문은 cURL에 관한 것이 아닙니다.
LS

68

당신은 시도 했습니까?

curl somesite.com --user username:password

13
@daronwolff 인수 위치 만 바꾸고 -u를 --user (장기)로 교체했지만 OP가 그의 질문에 이미 쓴 내용을 정확하게 작성했습니다
Murmel

3
질문자는 인증 이유를 알고 싶어합니다. 브라우저에서 작동하지 않습니다. 질문은 cURL에 관한 것이 아닙니다.
LS

15

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

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


8

WWW 인증 헤더

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


6

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

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

5

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.