Избегайте появления HTTP-аутентификации в расширении Chrome (дайджест) - PullRequest
11 голосов
/ 11 октября 2010

В настоящее время я разрабатываю расширение для Chrome, мне нужно получить доступ к некоторым ресурсам, защищенным http-auth (webdav).HTTP-аутентификация использует (в лучшем случае) дайджест-аутентификацию.

Я могу выполнить аутентификацию непосредственно в запросе ajax, используя форму https://login:password@domain.tld/path/to/ressource.

Проблема заключается в следующем: если логин / пароль неверен, я не могу просто получить статус 401 (неавторизованный), Chrome выскакивает в обычный диалог аутентификации.Что я не хочу, потому что это сбивает с толку пользователя, и я не могу сохранить учетные данные отсюда.

РЕДАКТИРОВАТЬ: Другой случай использования, с которым я столкнулся: я хочу проверить, если ресурс защищен паролем безпытаясь предоставить учетные данные для фактического доступа к нему.

Есть идеи о том, как поймать 401, не открывая окно авторизации Chrome?

Ответы [ 3 ]

4 голосов
/ 11 января 2014

Команды Google Chrome добавили событие onAuthRequired в Google Chrome 22, так что теперь можно определять, когда требуется базовая аутентификация HTTP.

Фактически я написал расширение, которое автоматически отправляет учетные данные базовой аутентификации HTTP с использованиемсобытие onAuthRequired.

Оно доступно бесплатно в официальном интернет-магазине Google Chrome: https://chrome.google.com/webstore/detail/basic-authentication-auto/dgpgkkfheijbcgjklcbnokoleebmeokn

Пример использования события onAuthRequired:

sendCredentials = function(status)
{   
    console.log(status);
    return {username: "foo", password: "bar"};
}

chrome.webRequest.onAuthRequired.addListener(sendCredentials, {urls: ["<all_urls>"]}, ["blocking"]);

Вам необходимодобавьте нужные права доступа к файлу манифеста, чтобы использовать onAuthRequired.

"permissions": [ "http://*/*", "https://*/*", "webRequest", "webRequestBlocking", "tabs" ],

Загрузите расширения и проверьте исходный код для лучшего подхода.

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

0 голосов
/ 12 октября 2010

Я думаю, что это невозможно.Если вы используете http-клиент браузера, он запросит учетные данные пользователя на 401.

РЕДАКТИРОВАТЬ: Over in mozilla land https://developer.mozilla.org/en/XMLHttpRequest проверить "mozBackgroundRequest".

...