German
(German Komashko)
17.Март.2015 11:44:04
#1
Всем привет.
Второй день подряд пытаюсь найти элегантное решение, старого ишью с NTLM аутентификацией.
Такой вариант http://login:pass@website.com
у меня разумеется не работает, иначе бы не задался вопросом) Проект на С#, драйвер Firefox.
Все возможные игры с профайлом, я тоже перепробовал:
ffprofile.SetPreference("network.automatic-ntlm-auth.trusted-uris", "company.com");
ffprofile.SetPreference("network.http.phishy-userpass-length", 255);
Остается, только “вбивать” логин и пароль. Но тут встает вопрос как именно.
AutoIt
, работает. Но к сожалению вызывая его из NUnit
я получаю COM
creation exception - Как решить эту проблему, я пока не понял.
Остается, разве что Coded UI Test
.
Одним словом, помогите кто чем может) Буду признателен за примеры.
Попробовал в своем фреймворке - получилось. С твоими настройками не работает, да. Что сделал:
network.ntlm. send-lm-response = true
network.negotiate-auth.using-native-gsslib = true
network.negotiate-auth.trusted-uris = https://, http://
network.negotiate-auth.delegation-uris = https://, http://
т.к. нтлм в моем случае был v1, а мозилла его депрекейтнула в 30ой версии https://developer.mozilla.org/en-US/Firefox/Releases/30/Site_Compatibility#Security , то пришлось еще:
network.negotiate-auth.allow-insecure-ntlm-v1 = true
в итоге:
https://DOMAIN%5cusername:password@test.com/
1 лайк
German
(German Komashko)
17.Март.2015 19:51:07
#3
Большое спасибо! Попробую у себя и отпишусь о результате.
Попробуйте cntlm. Решает многие проблемы с авторизацией для разных тулов
Для windows: Авторизующий прокси под Windows (+ нормальная работа Opera с NTLM как бонус) / Habr А под linux ставится через любой пакедж менеджер
2 лайка
German
(German Komashko)
18.Март.2015 07:45:42
#5
Как это не странно, но Firefox-ий pop-up “Authentication Required” все еще меня приследует.
Вот как сейчас выглядит код:
var ffProfile = new FirefoxProfile();
ffProfile.SetPreference("network.ntlm.send-lm-response", true);
ffProfile.SetPreference("network.negotiate-auth.using-native-gsslib", true);
ffProfile.SetPreference("network.negotiate-auth.trusted-uris", "http://, https://");
ffProfile.SetPreference("network.negotiate-auth.delegation-uris", "http://, https://");
ffProfile.SetPreference("network.negotiate-auth.allow-insecure-ntlm-v1", true);
Driver = new FirefoxDriver(ffProfile);
Driver.Navigate().GoToUrl(url);
Что еще, сюда можно добавить, я уже не могу придумать)
Проблема может быть где угодно. Понять ее в большинстве случаев можно отбрасыванием тех, которых точно нет. Если открыть фф в твоем случае с вновь созданным профилем по ссылке вида name:pass@site.com , авторизует ли он тебя? авторизует ли он в старом профиле? Давай больше информации.
dzhariy
(Дмитрий Жарий)
19.Март.2015 04:04:57
#7
Поапрбуйте поигратся с вот этими настройками (мне в свое время помогло решить похожую проблему для Chrome):
Также, можно попробовать добавить пароль авторизации в Windows Credentials store
2 лайка
Доброго времени суток.
Попробуйте Browser-mob proxy
Наш метод. Дефолтовые настройки профиля, ничего интересного FirefoxProfile profile = new FirefoxProfile();
Ну и сам метод
public void Start(Uri url, string user, string password)
{
var encodedUser = HttpUtility.UrlEncode(user);
var encodedPwd = HttpUtility.UrlEncode(password);
var baseUrl = url.Authority + url.PathAndQuery;
var protocol = url.Scheme + "://";
string ntlmUrl =
protocol
+ encodedUser
+ ":"
+ encodedPwd
+ "@"
+ baseUrl;
Driver.Url = ntlmUrl;
//// Если надо то можно сразу и делать Navigate(url); потому что логин не всегда навигейтит
}
Идея сотрудника. Авторство его.