Основна автентифікація HTTP - який очікуваний досвід роботи веб-браузера?


255

Коли сервер дозволяє отримати доступ через базову автентифікацію HTTP, який очікується досвід у веб-браузері ?

На хвилину ігноруючи веб-браузер, ось як створити базовий запит Auth за допомогою curl:

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

А як щодо веб-браузера? Що я бачив на деяких веб-сайтах - це я відвідаю URL-адресу, а потім сервер повертає код відповіді 401. Потім браузер відображає запит на ім’я користувача / пароль.

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


Ви впевнені, що використовуєте Basic Auth, а не Digest?
b_erb

не впевнений у різниці, якщо ви не запитуєте, чи я кодувати базовий 64. якби я робив це програмно, це було б, але завиток робить це для мене.
bpapa

Ви можете дізнатися, яка автентифікація використовується з заголовка відповіді WWW-Authenticate (значення: Дайджест або Основний).
Kniganapolke

2
Я думаю, що це питання потрібно переосмислити. Більше одного респондента вважають, що це питання про скручування, а не браузер.
LS

Ви маєте на увазі "автентифікацію", коли використовуєте термін "авторизація"?
Тарун

Відповіді:


160

Щоб допомогти всім уникнути плутанини, я переформулюю це питання у двох частинах.

По-перше: "як можна зробити аутентифікований запит HTTP за допомогою браузера, використовуючи BASIC auth?" .

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

У документації про згортання зазначено, що -uпараметр підтримує багато методів аутентифікації, базовим є стандартний.


3
Питання стосується curl, який не є браузером.
Рей Бакстер

26
Можливо, ви не читали питання цілком, як воно говорить прямо під командою curl: "Однак зараз я не маю доступу до curl (довга історія), і я хочу просто зробити це з веб-браузера, якщо це можливо . " ;)
Нікокуб

3
Я повністю погоджуюся з тим, що завивка працює чудово, я особисто використовую її регулярно, але питання не про завиток ...
Nicocube

4
Запитувач хоче знати, чому авт. не працює у веб-переглядачі. Питання не про CURL.
LS

68

Ти намагався ?

curl somesite.com --user username:password

13
@daronwolff Ви лише переключили позиції аргументів і замінили -u на --user (що є лише довгостроковою), але крім цього ви написали саме те, що ОП вже написало у своєму запитанні
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 для хромування. Це дає можливість вибору потрібного типу аутентифікації для кожного із запитів. У цьому меню ви можете налаштувати користувач та пароль. Листоноша автоматично переведе конфігурацію в заголовок аутентифікації, який буде надісланий з вашим запитом.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.