Как добавить учетные данные для входа в URL - PullRequest
0 голосов
/ 25 мая 2018

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

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

В основном, я хочу получить доступ к этой ссылке https://www.globalnorm.net/gn/doc.php?name=ASTM%20F%202638:2012-00&erx=0 (но мне нужно пройти аутентификацию). Как передать мое имя пользователя и пароль в URL?

Ответы [ 4 ]

0 голосов
/ 17 июля 2019

Похоже, есть некоторые разногласия по поводу того, отбросили ли браузеры функцию и / или не рекомендуется ли эта функция.Но если ваш браузер фактически не отбросил эту функцию, то, как отмечено в answer выше @ nimrodm, вы можете указать URL с базовой аутентификацией как

http://user:password@domain.com/

Однако вам не следуетиспользовать протокол HTTP, так как это отправит учетные данные в виде открытого текста.Вместо этого просто используйте:

https://user:password@domain.com/

Обратите внимание, что вы должны urlencode специальных символов в полях пользователя или пароля (я часто использую «@» в моих паролях, поэтому они должны быть записаны как «% 40»).

Браузер извлекает учетные данные и передает их на сервер в заголовке авторизации:

Authorization: Basic credentials

, где учетными данными является просто (url-декодированная) строка «username: password» какзаписано в URL, но закодировано в base64.Но так как соединение https зашифровано, заголовок зашифрован, и учетные данные не отображаются вне браузера.

Я думаю, что вся проблема с удалением поддержки или отменой функции была основана на последствиях безопасности для указания учетных данныхиспользуя протокол http.Но с доступностью бесплатных ssl-сертификатов и стремлением к «ssl везде» в наши дни это больше не кажется большой проблемой.

Конечно, существует также проблема того, сколько хороших сертификатов будет проходить таким образом.делает тебяМногие или большинство приложений, которым требуется вход в систему, ожидают получения учетных данных из формы, которую пользователь заполняет и отправляет с запросом POST.Приложение должно быть написано для проверки каждого запроса на наличие заголовка Authorization и, если оно есть, обрабатывать учетные данные так же, как если бы они были указаны в POST заполненной формы для входа.

Приложения, которые ожидают базовую HTTP-аутентификацию, обычно создаются с учетом этого требования, встроенного в конфигурацию сервера, например, с использованием директив Apache по этим строкам:

<Directory "/htdocs/protected">
    AuthName "Registered User"
    AuthType Basic
    AuthUserFile /lib/protected.users
    require valid-user
</Directory>

Где файл /lib/protected.users является файлом зашифрованных имен пользователей ипароли, сгенерированные утилитой Apache htpasswd.При такой конфигурации любой запрос ресурсов ниже /htdocs/protected автоматически проверяется Apache на наличие заголовка Authentication.Если запрос не имеет такого заголовка или учетные данные, указанные в заголовке, не соответствуют одной из пар имен пользователей и паролей в /lib/protected.users, то сервер отвечает статусом 401 Unauthorized и заголовком:

WWW-Authenticate    Basic realm="Registered User"

Обратите внимание, что значение области «Зарегистрированный пользователь» является значением AuthName из конфигурации Apache.Браузер обрабатывает этот ответ, отображая подсказку, запрашивающую имя пользователя и пароль, со значением области, содержащейся в подсказке, чтобы дать пользователю подсказку о том, какое конкретное имя пользователя и пароль требуется.

Браузеры должны обработатьучетные данные специально для преобразования их в заголовок Authorization, поэтому они также кэшируют их и отправляют каждый раз с запросами к одной и той же конечной точке, например, отправкой файлов cookie.Если они этого не сделали, пользователь должен будет указывать их в каждом последующем URL-адресе, указав эту конечную точку, чтобы избежать получения запроса.

Надеюсь, это поможет.

0 голосов
/ 25 мая 2018

Веб-сервер не заботится ни о чем, кроме "?".Эти данные отправляются в приложение.

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

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

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

0 голосов
/ 17 августа 2018

Если я прав в моей оценке, вопрос: Можете ли вы подтвердить, что можно передать пользователя / пройти через параметры HTTP (GET или POST)? Вот фрагмент кода, который я представляюиспользуется для отправки имени пользователя и пароля в качестве параметров для вызова GET.Надеюсь, это поможет.

 $('#button').click(function () {
            var username = $('#username').val();
            var password = $('#password').val();
            window.location.href = '@Url.Action("DesiredAction")?username=' + username + '&password=' + password;
        });
0 голосов
/ 25 мая 2018

Стандартный способ передачи базовой аутентификации на веб-серверы заключается в использовании URL-адреса в виде:

http://user:password@domain.com/

Веб-серверы не ожидают базовой аутентификации в параметрах запроса.Разумеется, вы можете реализовать свою собственную аутентификацию, используя параметры запроса / заголовки HTTP или любой другой метод.

Обновление

Конкретный предоставленный вами URL перенаправляет на https://www.globalnorm.net/login.php?ecd=S&info=nosessionorcookie&doc=....

Путь входа в систему не возвращает заголовок WWW-Authenticate, который используется для указания того, что базовая аутентификация поддерживается.Так что нет смысла пробовать простую аутентификацию HTTP.

Эта конкретная страница входа в систему, похоже, ожидает POST-запрос на /login.php с параметрами USR, PAS.Ответ, вероятно, будет включать cookie-файл, который позже используется для аутентификации на сервере.

...