Chrome 扩展程序中强制代理重新身份验证

2024-01-16

我正在制作一个扩展,允许用户存储具有身份验证凭据(用户/通行证)的代理服务器并在服务器之间切换。我正在听webRequest.onAuthRequired事件以及当服务器挑战身份验证时,证明用户已保存的用户名/密码,根据provideCredentialsSync这里的例子:https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/onAuthRequired#Examples https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/onAuthRequired#Examples

问题是,当提供这些凭据时,它们似乎会保存/缓存在开发人员无权访问的扩展中的某个位置,然后不断地重复使用。因此,如果扩展用户随后将其凭据更改为不正确,则浏览器会自动继续使用其中经过身份验证的凭据。Proxy-Authorizationheader 且请求成功。反之亦然,如果身份验证失败,并且请求按照上面的示例被取消,则用户将其信用更改为正确的,服务器不会再次询问身份验证,并且请求失败,并且无法提供新的信用。

Chrome 也不允许修改传出Proxy-Authorization标头,这意味着无法在代码中删除/更改它以强制服务器再次质询。

所以我认为核心问题是:

  • 有谁知道从返回时详细信息保存在哪里webRequest.onAuthRequired听众,有没有办法 清除/清除?

  • 当实际发生什么时{cancel: true}返回,为什么对该服务器的所有请求然后继续失败而不触发 其他onAuthRequired?

感谢任何人都能发出的光芒!


问题是,当提供这些凭据时,它们似乎会保存/缓存在开发人员无权访问的扩展中的某个位置,然后不断地重复使用

不完全是...代理服务器不会在每个连接请求上发送身份验证请求(需要 407 代理身份验证)。他们经常定期检查(取决于他们的设置)。

浏览器也可能会缓存(例如,Firefox 中有自动登录功能,但 Chrome 没有)。

有谁知道从 webRequest.onAuthRequired 监听器返回时详细信息保存在哪里,有没有办法清除/清除?

重要的一点是,如果前一个凭据正确,则客户端无需向同一服务器发送不同的凭据。

服务器请求凭据:

  • 如果通过了正确的,则允许,并且服务器和浏览器都会保留一段时间
  • 如果传递错误,浏览器不会保留它,但服务器可能会阻止 重复尝试一段时间,然后重新请求身份验证

您可以删除并重新启动webRequest.onAuthRequired但就我个人而言,我还没有发现真正需要对新凭据执行此操作,除非我在开​​发过程中通过故意发送错误的凭据来测试错误的身份验证结果,而客户端使用时不应出现这种情况。

webRequest.onAuthRequired每当服务器请求时就会触发。您可以尝试记录它以查看服务器执行此操作的频率。

扩展代码(我的意思是开发人员代码,而不是浏览器)也可以缓存凭据(以避免进行异步调用并减慢身份验证和连接速度)。

就我个人而言,我缓存所有代理的所有凭据,然后相应地响应身份验证请求。否则,您可以更改扩展代码缓存对象和/或删除并重新启动webRequest.onAuthRequired.

返回 {cancel: true} 时实际会发生什么?为什么对该服务器的所有请求都会继续失败,而不会触发另一个 onAuthRequired?

这取决于扩展代码和服务器设置。服务器设置可能会在身份验证失败后阻止连接一段时间(以防止 Ddos 攻击)。

扩展代码还可以在发送之前检查正确的身份验证{cancel: true}这会终止连接。在实践中,发送{cancel: true}很少需要。

还有可能进入错误的身份验证循环,这将导致连接失败并锁定浏览器。

In chrome,我会使用(确实使用且必须使用)aPromise这是进行身份验证的正确方法,因为代码将停止执​​行,直到承诺得到解决。使用回调函数(chrome API 使用的)不会执行可能导致问题的原因。

简化一下:

  • add webRequest.onAuthRequired
  • 根据 Auth 请求,启动new Promise获取正确的凭据
  • 准备避免错误身份验证循环
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Chrome 扩展程序中强制代理重新身份验证 的相关文章

随机推荐

  • scipy curve_fit 无法拟合 tophat 函数

    我正在尝试将高帽函数拟合到某些数据 即 f x 对于整条实数线来说是常数 但有限长度的一段除外 它等于另一个常数 我的参数是 tophat 函数的两个常量 中点和宽度 我尝试使用 scipy optimize curve fit 来获取所有
  • Go 依赖于 C 运行时吗?

    我找不到 Go 依赖于 C 运行时的信息吗 如果依赖的话 是否静态编译成二进制文件 使得Go编写的应用程序可以在任何地方运行而无需依赖 这里的主题是关于什么是 C 运行时 https stackoverflow com questions
  • Android Java 文本转语音查看额外字符串信息

    我已经浏览了许多适用于 Android 的文本到语音示例 并且我遇到了一个我认为非常简单的问题 但我一生都无法解决它 我只是希望能够查看 EXTRA AVAILABLE VOICES 的输出 例如 根据这个链接 http developer
  • 如何在没有任何.xml配置的情况下使用spring 3.X注释

    我是 Spring 新手 我不喜欢使用 xml 作为 spring 配置 所以我只想使用注释 以下是我的测试代码 它在没有 spring 的情况下运行良好 但是如果我使用 DI 并添加注释 Resource 我会得到 NullPointEx
  • 无法弄清楚如何在 while 循环内正确递增变量,C

    编辑 在我的 IDE 中重写代码后 今天我第八次犯了菜鸟错误 给我的输入提供了错误的数据类型 该错误已被修复 但我的输出仍然不正确 关于我的目标的详细信息 在进行找零时 您很可能希望最大限度地减少为每个客户分发的硬币数量 好吧 假设收银员欠
  • PHP 与 BASH 的 CLI 脚本比较? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我从未在 CLI 中使用过 PHP 但我见过使用 PHP 代码运行的脚本 我想知道 当 PHP 如此流行并且能够在 CLI 中运行时 我们为什么
  • Flash 游戏服务器建议(Node.js、Red5 等)

    快速总结 我们已经完成了一个类似于俄罗斯方块的 Flash 游戏 可以 链接 进行多人游戏 做了一些研究并在这里询问后 闪存套接字 点对点功能 https stackoverflow com questions 6921292 flash
  • 如何通过不同页面(上下文)共享来自 Streambuilder 的提供者数据

    我想在小部件上实时获取来自 firebase 的数据 当我尝试使用StreamProvider然后使用Navigator push 推送的小部件无法获取值Provider of context 我尝试把StreamProvider作为的父母
  • ASP.NET Core 5 MVC:httpContext.User 未在自定义 CultureProvider 中进行身份验证

    我必须在我的网络应用程序中添加本地化 请求是 grpc 服务将为所有用户提供默认语言 因此在启动时我尝试读取该值 但不知道如何在 new 中使用注册的服务CustomRequestCultureProvider public static
  • Android 上的库项目的独立测试项目

    我的问题是 如何创建 Android独立的Android 库的测试项目 我有我的安卓机library 在项目设置中标记为 库 和一个包含我的 JUnit 测试类的 Android 项目 这test项目正确引用了 Android 库 在 An
  • 在事务内的 Access 中执行 UPDATE SQL 时超出系统资源

    我正在执行一个简单的UPDATE tblTable SET DataSet 3在一个事务内 但在尝试运行它几秒钟后 我收到 3035 系统资源超出 大约有 30K 行 Dim db As DAO Database wrk As DAO Wo
  • 使用seaborn调整子图的大小

    我最近刚刚开始使用 matplotlib 和 seaborn 来绘制我的图表 这是我到目前为止编写的代码 count 1 l 13 0 47 29 10 plt figure figsize 30 40 for ww in l temp d
  • 如何使用运算符<<打印类对象

    我想为 AutoData 类编写一个打印函数 其中包含有关汽车的信息 通过这个打印函数 我理想地希望打印出包含许多不同类对象的向量 我已经为对象的每个元素编写了 get 函数 但我仍然有点不确定如何使用这些函数来编写函数以以下格式打印数据
  • javafx webview 无法正确显示 html 页面

    当我测试这个示例程序时 webview 无法正确显示 html 页面 第一页 第一个圆圈 显示正确 但 它应该每 10 秒更改一次页面 但事实并非如此 它应该显示图表 当您单击第二个圆圈时 但它没有 它应该显示显示图像 当您单击第三个圆圈时
  • Android Ant 错误:解析为没有项目的 project.properties 文件的路径

    我在 Ant 脚本中执行此操作 我链接一个库项目 更新它们并构建它们 但我不断在标题中收到此错误 有人知道如何解决这个问题吗
  • 我的聪明人有未知标签,但它是合法标签

    目前我更改 smarty 2 gt 版本 3 但我改变后出现了如下问题 SmartyCompilerException Syntax Error in template home test engine mobile9 template t
  • 通过其他表更新第二个表中的数据

    我有 3 个表 我想用第三个表和第四个表更新第二个表中的第一个表 table1和table2中的ID是唯一的 table3和table4中的ID是唯一的 在表2和表3中 uid是唯一的 但我也需要检查另一个值 源 table1 ID val
  • C 中文本查找的通用枚举

    Update 给出的代码确实有效 当我认为没有的时候我就错了 我的错 对不起 如果您可以改进代码 请在https codereview stackexchange com questions 150480 generic enum to t
  • 计算数组的期望,速度改进的建议

    我有一个 N0 N1 N2 N3 矩阵 V 和一个 N1 N1 矩阵 M N1 通常约为 30 50 N0xN1xN2xN3 约为 1 000 000 我想要一个新的 Matrix EV 其中 i0 i1 i2 i3 条目由下式给出 np
  • Chrome 扩展程序中强制代理重新身份验证

    我正在制作一个扩展 允许用户存储具有身份验证凭据 用户 通行证 的代理服务器并在服务器之间切换 我正在听webRequest onAuthRequired事件以及当服务器挑战身份验证时 证明用户已保存的用户名 密码 根据provideCre