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

时间:2012-02-13 18:25:10

标签: c# internet-explorer authentication bho

之前可能已经提出这个问题,但我没有在任何地方看到它。

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

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

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

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

一切都会有所帮助。谢谢大家!

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

2 个答案:

答案 0 :(得分:2)

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

浏览器助手对象

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

我希望能帮助任何需要做同样事情的人。感谢所有人给予的帮助。我想每个人都和BHO一样多,就像我一样。

编辑2/14:这确实是答案。我让BHO按照需要工作。还有一些非常小的调整要完成。 (实际上,它不是那么轻微但它正在发挥作用。)

答案 1 :(得分:1)

老实说,这个概念危险。您正在踩踏操作系统的安全模型,以适应懒惰的用户。

另一个问题是您的架构是碎片化的。如果你在一个大型组织中有大量的工作站没有使用适当的平台进行统一认证(例如AD / LDAP /等等),那么你将遇到一个非常难以维护的混乱局面。 / p>

你在这里做的是插一个洞,你没有修复裂缝。我强烈建议你使用缺乏源代码来将系统“修补”作为变革的催化剂。

如果你一直都在努力保持基础设施的原样,那么你应该考虑测试&经过验证的软件解决方案,有助于帮助您的用户保持理智。

看一下FOSS申请KeePass。它将允许您安全地存储您的密码(无论如何您的建议必须解决的问题),并且您可以让您的用户将数据库存储在USB-Stick上,并始终与自己保持一致。他们可以登录到KeePass数据库并使用自动类型热键在提示的各种登录框中输入他们的密码。这不仅仅适用于IE身份验证请求,它可以完成所有应用程序。

关于这一点的好处是你可以让人们使用相对较强的密码,因为他们只需要记住密码(KeePass DB)。


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