如何使用Firefox SDK访问HTTP身份验证对话框

时间:2013-04-23 06:30:42

标签: firefox firefox-addon firefox-addon-sdk http-authentication

我正在为Linux用户编写一个Firefox附加组件,以传递NTLM经过身份验证的站点的凭据。类似于使用XUL框架编写的AutoAuth

https://addons.mozilla.org/en-us/firefox/addon/autoauth/

我的问题是如何使用Firefox SDK访问身份验证对话框?

1 个答案:

答案 0 :(得分:1)

使用附加sdk你没有XUL叠加层,所以只有你真正可以做的就是使用窗口观察器。由于弹出窗口被视为窗​​口,因此当您在浏览器中弹出窗口时,您会在onTrack函数中看到它们。

此示例代码监视窗口,查找窗口位置chrome://global/content/commonDialog.xul,该窗口位置类似于autoauth附加组件正在执行的操作。该对话框用于许多身份验证问题,因此您将不得不执行检测NTLM身份验证的其他工作。

var { isBrowser } = require("sdk/window/utils");
var delegate = {
  onTrack: function (window) {
    if (!isBrowser(window) && window.location === "chrome://global/content/commonDialog.xul") {
       // this could be the window we're looking for modify it using it's window.document
    }
  },
  onUntrack: function (window) {
    if (!isBrowser(window) && window.location === "chrome://global/content/commonDialog.xul") {
       // undo the modifications you did
    }
  }
};
var winUtils = require("window-utils");
var tracker = new winUtils.WindowTracker(delegate);

使用这段代码,你几乎就是autoauth附加组件的load()函数。您可以使用window.document.getElementById()访问该窗口的DOM并更改其中的元素。

注意 window-utils模块已被弃用,因此当您从该模块移动到(希望)其他类似的模块时,您需要跟上SDK。