Javascript 使用本机消息在chrome的NTLM弹出窗口中填写用户名和密码

Javascript 使用本机消息在chrome的NTLM弹出窗口中填写用户名和密码,javascript,asynchronous,google-chrome-extension,webrequest,chrome-native-messaging,Javascript,Asynchronous,Google Chrome Extension,Webrequest,Chrome Native Messaging,地点: 当我们访问该站点时,会在background.js中触发onAuthRequired方法。 根据mdn文档,我们可以使用extraInfoSpec作为blocking传递用户名和密码字段 测试方法: background.js const myCredentials = { username: "me@company.com", password: "zDR$ERHGDFy" } function provideCredentialsSyn

地点:

当我们访问该站点时,会在
background.js
中触发
onAuthRequired
方法。 根据mdn文档,我们可以使用
extraInfoSpec
作为
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代码:

按照上述方法,它尝试使用给定的凭据进行身份验证。 如果凭证正确,则将重定向到相应页面

问题


  • 如何只填写凭证而不点击请求?用户将手动单击
    登录
    按钮
  • 如何使用本机主机填写或传递凭据?本机主机将发送凭据,并且该凭据将传递给上述方法进行身份验证

  • 这是客户端脚本吗?如果是这样,则您的凭据存储在脚本中是一个主要的安全问题。@Taplar是的,这是客户端脚本。是的,关于安全性,您是对的,因此我需要通过本机主机访问凭据,而不是在脚本中硬编码凭据。“如何只填充凭据而不命中请求?”-您不能。我想这是故意的。还请注意,使用NTLM/Kerberos时,通常根本不会出现身份验证提示。当您发布的代码和示例只涉及HTTP基本身份验证时,为什么这个问题的标题中会出现NTLM?NTLM/Kerberos非常不同。@Dai对迟回复表示歉意。NTLM是因为上面提到的站点的响应头为
    www-authenticate:NTLM
    。这是客户端脚本吗?如果是这样,则您的凭据存储在脚本中是一个主要的安全问题。@Taplar是的,这是客户端脚本。是的,关于安全性,您是对的,因此我需要通过本机主机访问凭据,而不是在脚本中硬编码凭据。“如何只填充凭据而不命中请求?”-您不能。我想这是故意的。还请注意,使用NTLM/Kerberos时,通常根本不会出现身份验证提示。当您发布的代码和示例只涉及HTTP基本身份验证时,为什么这个问题的标题中会出现NTLM?NTLM/Kerberos非常不同。@Dai对迟回复表示歉意。NTLM是因为上面提到的站点的响应头为
    www-authenticate:NTLM