Подтвердить что ты не робот

Почему cURL не работает с Windows Authentication на IIS7?

Я пытаюсь получить доступ к службе, которая находится за Windows Authentication. Я думал, что могу передать учетные данные так, как передаются учетные данные HTTP Basic Authentication, но он не работает. Когда я делаю следующее, я получаю ошибку 401, и я абсолютно уверен, что пароль правильный.

curl --user username:password http://example.com

Почему это не работает?

4b9b3361

Ответ 1

Если вы используете аутентификацию Windows, вам необходимо использовать NTLM:

curl --ntlm --user username:password http://example.com

Ответ 2

Вы также можете оставить поля имени пользователя и пароля пустыми (-u :), и curl будет использовать ваши текущие учетные данные из вашей среды:

curl --ntlm -u : http://example.com

В docs (под -u, --user)

Если вы используете двоичный ключ с поддержкой SSPI Windows и выполняете Kerberos V5, Согласование, проверка NTLM или Digest, тогда вы можете сказать, что выберите имя пользователя и пароль из своей среды, указав один двоеточие с этой опцией: "-u:".

Связанные с Kerberos Binaries

Ответ 3

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

Дело в том, что CURL отправляет учетные данные только с первым запросом, в то время как вам может понадобиться их для второго, например. Чтобы передать учетные данные со всеми запросами, используйте параметр --location-trusted.

Из документации CURL (-L опция):

Когда используется аутентификация, curl отправляет свои учетные данные только исходному хосту. Если перенаправление принимает завиток на другой хост, он не сможет перехватить пароль пользователя+. См. Также --location-trusted, как это изменить.

Это важное примечание помогло мне авторизоваться на моем веб-сайте компании. Надеюсь, что это поможет кому-то другому.