Базовая аутентификация HTTP - что ожидается от браузера? - PullRequest
236 голосов
/ 11 января 2010

Когда сервер разрешает доступ через обычную HTTP-аутентификацию, что ожидается в браузере?

Обычно я делаю это с помощью curl:

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

И это работает просто отлично. Однако сейчас у меня нет доступа к curl (длинная история), и я хочу просто сделать это из веб-браузера, если это возможно.

Я думал, что Basic Auth должен был работать так: я набираю URL, который хочу, а затем сервер решает, что я не авторизован, возвращает код ответа 401, и я ввожу свое имя пользователя и пароль в приглашение. Если все верно, страница загружается!

Однако на somesite.com я вообще не получаю приглашение на авторизацию, просто страница, на которой написано, что я не авторизован. Неужели на каком-то сайте неправильно реализован рабочий процесс Basic Auth, или мне нужно что-то еще сделать?

Ответы [ 6 ]

145 голосов
/ 24 октября 2013

Чтобы помочь всем избежать путаницы, я переформулирую вопрос в двух частях.

Первое: "как сделать аутентифицированный HTTP-запрос с помощью браузера, используя BASIC-аутентификацию?" .

В браузере вы можете сначала выполнить базовую аутентификацию http, дождавшись появления приглашения или отредактировав URL, если вы придерживаетесь этого формата: http://myusername:mypassword@somesite.com

NB. Упомянутая в вопросе команда 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 я вообще не получаю приглашение на авторизацию, просто страница, на которой написано, что я не авторизован. Не реализован ли на некоторых сайтах рабочий процесс Basic Auth правильно, или мне нужно еще что-нибудь сделать? "

В документации по curl сказано, что опция -u поддерживает множество методов аутентификации, по умолчанию используется Basic.

63 голосов
/ 18 декабря 2015

Вы пробовали?

curl somesite.com --user username:password
15 голосов
/ 12 января 2010

Возможно, в вашем браузере кешировано старое неверное имя пользователя / пароль.Попробуйте очистить их и проверьте еще раз.

Если вы используете IE, а somesite.com находится в вашей зоне безопасности интрасети, IE может отправлять ваши учетные данные Windows автоматически.

7 голосов
/ 07 апреля 2010

WWW-Authenticate header

Вы также можете получить это, если сервер отправляет код ответа 401, но неправильно устанавливает заголовок WWW-Authenticate - я должен знать, я только что исправил это в собственном коде, потому что приложения VB не выскакивали запрос аутентификации.

6 голосов
/ 26 октября 2012

Если в заголовках запроса нет учетных данных, ниже приведен минимальный ответ, необходимый для IE, чтобы запросить учетные данные и повторно отправить запрос пользователю.

Response.Clear();
Response.StatusCode = (Int32)HttpStatusCode.Unauthorized;
Response.AddHeader("WWW-Authenticate", "Basic");
5 голосов
/ 11 ноября 2015

Вы можете использовать Postman плагин для Chrome. Это дает возможность выбрать тип аутентификации, который вам нужен для каждого из запросов. В этом меню вы можете настроить имя пользователя и пароль. Почтальон автоматически переведет конфигурацию в заголовок аутентификации, который будет отправлен с вашим запросом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...