向IE身份验证弹出窗口传递凭据的应用程序

本文关键字:应用程序 窗口 IE 身份验证 | 更新日期: 2023-09-27 18:24:41

以前可能有人问过这个问题,但我在任何地方都没有看到。

从本质上讲,我想做的是让一个小型的C#应用程序(EDIT:或BHO)运行并检测用户何时启动IE(8或更高版本)。一旦启动,它只需要坐在那里,直到它注意到IE中出现了身份验证挑战弹出窗口。然后它会隐藏IE弹出窗口,并向用户显示自定义身份验证弹出窗口。然后,这个新的弹出窗口会将输入的凭据传递回IE进行身份验证

应用程序(或服务)将缓存凭据,并将其传递给在本地Intranet上收到的任何进一步的身份验证弹出窗口。这是一种自定义的准单点登录解决方案。

在人们开始建议更改IE或服务器上的设置之前,请知道这是不可能的。上面的解释正是我们需要做的。我也不喜欢。

我们目前有一个用C++(而不是.NET)编写的小型内部实用程序,它非常成功地处理了这种完全相同的行为,但源代码不再可用于修复/升级。

任何事情都会有帮助。谢谢大家!

仅供参考-刚刚看到第一条评论。不,这不是恶意软件、pwd欺骗程序或类似的类型。员工会得到一个定制的、带有公司标志的凭证弹出窗口来处理所有事情。它的目的是处理多种不同类型的身份验证(有些是自定义的),特定于我们内部网中不同的站点。

向IE身份验证弹出窗口传递凭据的应用程序

我终于找到并决定了一个已经作为原型(非常有限的原型)工作的解决方案。还有很多工作要做,但至少隧道尽头还有曙光。如果我选择了其他路线或收到了更好的建议,我一定会更新这些信息。对于那些可能需要类似(可疑)东西的人,以下是我正在做的事情。

浏览器帮助程序对象

  • 与每个新的IE实例实例化
  • 向IE注册以接收正在创建的事件和新窗口/控件
  • 挂钩接收控件的描述,以便逻辑决定要做什么
  • 每个身份验证对话框窗口或控件的句柄
  • UIAutomation COM的句柄,以检查请求的服务器和领域
  • 多线程支持,能够阻塞线程
  • 缓存在内存中的加密凭据
  • 。。。。还有更多

我希望这能帮助到任何需要这样做的人。感谢大家给予的帮助。我想每个人都和我一样是BHO的一个角落。

2014年2月版:这确实是答案。我让BHO按要求工作。还有一些非常小的调整需要完成。(事实上,它没有那么小,但它正在工作。)

老实说,这个概念是危险的。你是在回避操作系统的安全模型,以容纳懒惰的用户。

另一个问题是您的体系结构是分散的。如果一个大组织中有很多工作站没有使用适当的平台进行统一身份验证(如AD/LDAP/Etc…),那么你将陷入一个非常难以维护的混乱。

你在这里做的是堵住一个洞,而不是修补裂缝。我强烈建议您利用源代码的缺乏来不断"修补"系统,作为变革的催化剂。

如果你一心想让基础设施保持原样,那么你应该看看测试过的&经过验证的软件解决方案,帮助您的用户保持理智。

看看FOSS应用程序KeePass。它将允许你安全地存储密码(无论如何,你的提案都必须解决这个问题),你可以让你的用户将他们的数据库存储在他们随时随身携带的U盘上。他们可以登录一次KeePass DB,并使用"自动键入"热键在提示的各种登录框中输入密码。这不仅适用于IE身份验证请求,还可以用于所有应用程序。

这样做的好处是,你可以让人们使用相对强大的密码,因为他们只需要记住那个密码(KeePass DB)。


最终,你会在试图抓住授权挑战时遇到问题,即使你现有的解决方案也可能以一种非常黑客的方式进行,你会发现在未来越来越难继续这种行为。这主要是因为它是一个"IFFY AT BEST"解决方案,随着安全性的成熟,执行起来可能会更加困难。