HTTP 기본 인증-예상되는 브라우저 환경은 무엇입니까?
서버가 기본 HTTP 인증을 통한 액세스를 허용하면 브라우저에서 어떤 경험이 예상됩니까?
나는 일반적으로 curl로 이것을 수행합니다.
curl -u myusername:mypassword http://somesite.com
그리고 그것은 잘 작동합니다. 그러나 지금은 curl (긴 이야기)에 액세스 할 수 없으며 가능한 경우 웹 브라우저에서 수행하고 싶습니다.
Basic Auth가 작동하는 방식을 생각했습니다. 원하는 URL을 입력 한 다음 서버가 승인되지 않은 것으로 판단하고 응답 코드 401을 반환하고 프롬프트에 사용자 이름과 비밀번호를 입력합니다. 맞으면 페이지가로드됩니다!
그러나 somesite.com에서 인증 프롬프트가 표시되지 않고 승인되지 않았다는 페이지 만 표시됩니다. 어떤 사이트가 기본 인증 워크 플로우를 올바르게 구현하지 않았습니까? 아니면 다른 조치가 필요합니까?
모든 사람이 혼란을 피할 수 있도록 질문을 두 부분으로 재구성 할 것입니다.
첫 번째 : "BASIC 인증을 사용하여 브라우저에서 인증 된 HTTP 요청을 작성하는 방법" .
브라우저에서 프롬프트가 표시 될 때까지 기다리거나이 형식을 따르는 경우 URL을 편집하여 http 기본 인증을 먼저 수행 할 수 있습니다. http://myusername:mypassword@somesite.com
NB : 명령 행과 curl이 설치되어 있다면 질문에 언급 된 curl 명령은 완벽합니다. ;)
참고 문헌 :
- https://en.wikipedia.org/wiki/Basic_access_authentication#URL_encoding
- https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax
- https://tools.ietf.org/html/rfc3986#page-18
또한 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은 구성을 요청과 함께 전송 될 인증 헤더로 자동 변환합니다.
'Programing' 카테고리의 다른 글
preferredStatusBarStyle이 호출되지 않았습니다. (0) | 2020.04.07 |
---|---|
Meteor, Ember.js 및 Backbone.js의 주요 차이점은 무엇입니까? (0) | 2020.04.07 |
폴더를 선택하도록 OpenFileDialog를 어떻게 구성합니까? (0) | 2020.04.07 |
Type 변수를 사용하여 변수 캐스팅 (0) | 2020.04.07 |
하나의 거대한 .css 파일과 여러 개의 작은 특정 .css 파일이 있습니까? (0) | 2020.04.07 |