Назад | Перейти на главную страницу

Можете ли вы передать user / pass для базовой аутентификации HTTP в параметрах URL?

Я считаю, что это невозможно, но кто-то из моих знакомых настаивал на том, что это работает. Я даже не знаю, какие параметры попробовать, и нигде не нашел этого документированного.

Я попытался http://myserver.com/~user=username&password=mypassword но это не работает.

Можете ли вы подтвердить, что на самом деле невозможно передать пользователя / передать через параметры HTTP (GET или POST)?

Действительно, невозможно передать имя пользователя и пароль через параметры запроса в стандартной HTTP-аутентификации. Вместо этого вы используете специальный формат URL, например: http://username:password@example.com/ - это отправляет учетные данные в стандартном HTTP-заголовке «Авторизация».

Возможно, тот, с кем вы разговаривали, думал о настраиваемом модуле или коде, который просматривал параметры запроса и проверял учетные данные. Это не стандартная HTTP-аутентификация, это специфическая вещь для приложения.

http: // имя пользователя: пароль@example.com будет работать для FireFox, Chrome, Safari, НО не для IE.

База знаний Microsoft

Не рекомендуется передавать параметры базовой аутентификации в URL

Для этого есть поле заголовка авторизации, проверьте его здесь: список заголовков http

Как пользоваться, написано здесь: Базовая аутентификация доступа

Там вы также можете прочитать, что, хотя он по-прежнему поддерживается некоторыми браузерами, предлагаемое решение добавления учетных данных базовой авторизации в URL-адрес не рекомендуется.

Читайте также глава 4.1 в RFC 2617 - HTTP-аутентификация для получения дополнительных сведений о том, почему НЕ использовать обычную проверку подлинности.


Передача параметров аутентификации в строке запроса

При использовании OAuth или других служб аутентификации вы также можете часто отправлять свой токен доступа в строке запроса, а не в заголовке авторизации, например:

GET https://www.example.com/api/v1/users/1?access_token=1234567890abcdefghijklmnopqrstuvwxyzABCD

В вашем примере URL-адрес http://myserver.com/ Было бы:

http: // имя пользователя: password@example.com/myserver.com/

По состоянию на 19.12.2019 я протестировал это, и он работает для Chrome Firefox Safari

Но не для IE, который больше не поддерживает базовую аутентификацию. Я реализовал это с помощью SSRS 2017, который скрывает имя пользователя и пароль. Я бы порекомендовал вам проверить это в браузере инкогнито. Протестируйте с паролем и без него в разных браузерах в режиме инкогнито. Тот, у кого нет пароля, должен спросить у вас пароль.

Можно (очевидно) отправить любую строку в параметрах GET, хотя не рекомендуется отправлять логин и пароль, так как это может сделать его очень заметным, особенно если это не в запросе AJAX.

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