Как работает аутентификация http://user:pass@host.com? - PullRequest
5 голосов
/ 20 октября 2011

Может кто-нибудь объяснить, как работает http://user:pass@host.com аутентификация?Отправляет ли браузер заголовок Authorization с кодом user:pass в кодировке base-64?

Я открыл консоль Net в инструментах разработчика Chrome, и когда я делаю запрос, такой как http://user:pass@stackoverflow.com, я не вижу добавляемый заголовок Authorization.

Мне действительно интересно, как браузеротправляет пароль в случае, если я использую user:pass@ перед URL.

1 Ответ

3 голосов
/ 20 октября 2011

Для проверки заголовков необходимо выполнить проверку на сервере, который требует проверки подлинности. Клиент не будет отправлять заголовок Authorization, пока сервер не запросит его, поскольку клиент не будет знать, какой метод проверки подлинности требуется серверу (базовый или дайджест).


HTTP-аутентификация выполняется в двух запросах:

Сначала отправляется запрос без заголовка Authorization. Затем сервер отвечает WWW-Authenticate, который сообщает клиенту, как проходить аутентификацию. Это включает в себя имя области и метод аутентификации (опять же, это простой или дайджест)

Затем клиент отправляет новый запрос с дополнительным заголовком Authorization. В случае базовой аутентификации этот заголовок просто кодируется user:pass base64, как вы говорите:

Authorization: Basic dXNlcjpwYXNz

Теперь пароль виден при передаче, если вы не используете https. Лучшим вариантом является дайджест-аутентификация , где содержимое WWW-Authenticate и Authorization лучше всего объясняется в статье Википедии . :)

...