Введите имя пользователя и пароль во всплывающем окне NTLM в chrome, используя собственный обмен сообщениями. - PullRequest
1 голос
/ 05 августа 2020

Сайт: https://httpbin.org/basic-auth/user/passwd

Когда мы посещаем сайт, метод onAuthRequired запускается в background.js. Согласно mdn docs https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/onAuthRequired мы можем передать поле имени пользователя и пароля, используя extraInfoSpec as blocking.

Протестированный подход: background.js

const myCredentials = {
  username: "me@company.com",
  password: "zDR$ERHGDFy"
}
function provideCredentialsSync(requestDetails) {
  // If we have seen this request before, then
  // assume our credentials were bad, and give up.
  if (pendingRequests.indexOf(requestDetails.requestId) != -1) {
    console.log(`bad credentials for: ${requestDetails.requestId}`);
    return { cancel: true };
  }
  pendingRequests.push(requestDetails.requestId);
  console.log(`providing credentials for: ${requestDetails.requestId}`);
  return { authCredentials: myCredentials };
}

browser.webRequest.onAuthRequired.addListener(
  provideCredentialsSync,
  { urls: [target] },
  ["blocking"]
);

Для справки см. Код github: https://github.com/mdn/webextensions-examples/tree/master/stored-credentials

В соответствии с описанным выше подходом он пытается аутентифицироваться с использованием заданных учетных данных. И если правильные учетные данные будут перенаправлены на соответствующую страницу.

Вопросы

  1. Как заполнить только учетные данные и не нажать на запрос? Пользователь нажмет кнопку Sign In вручную.
  2. Как заполнить или передать учетные данные с помощью собственного хоста? Собственный хост отправит учетные данные, и эти учетные данные будут переданы в вышеуказанный подход для аутентификации.
...