【问题标题】:Passing AD authentication credentials via IE browser in C# Windows Form在 C# Windows 窗体中通过 IE 浏览器传递 AD 身份验证凭据
【发布时间】:2008-11-05 22:27:55
【问题描述】:

我们有一个托管 IE 浏览器控件的 Windows 窗体应用程序。我们的用户运行应用程序并打开存储在 MOSS 中的文档的链接。我们正在尝试将应用程序设置为传递服务帐户的凭据,这样我们就可以避免让所有用户访问 MOSS 站点。我们使用了找到here 的代码,如果用户当前没有登录到我们的域,这似乎工作正常。但是,该应用程序似乎不会为已通过域身份验证的任何用户传递服务帐户身份验证。在这种情况下,它似乎只是使用经过身份验证的用户凭据。

我们怎样才能做到这一点?

【问题讨论】:

  • 为什么不只授予“所有人”对 SharePoint 网站的访问权限,或者将所有需要访问该网站的用户放在一个 AD 组中,然后将该组添加到 SharePoint 网站。在这种情况下,模仿听起来像是一种黑客行为。
  • 杰夫:对不起,我删除了帖子,因为我没有打开你提供的链接。
  • spoon16 - 到目前为止,我们为每个人提供了访问权限,但出于审计原因我们不想这样做。对信息的访问是通过打开 Windows 窗体的应用程序来控制的,我们宁愿不让用户直接访问 MOSS 站点,而是使用服务帐户。

标签: c# .net winforms internet-explorer windows-authentication


【解决方案1】:

您指向的网站在哪个 Internet Zone 下运行?即使您使用自己的浏览器控件,它仍然会在某个区域中。用普通浏览器访问相关站点,确定是哪个区,确定在哪个区。
alt text http://img219.imageshack.us/img219/7162/internetzonenp8.jpg

如果该特定区域具有自动登录功能,它将采用您的登录凭据。但是,如果您没有以有效的域用户身份登录,则不接受这些本地 Windows 凭据,并且它似乎依赖于您的代码提供的凭据。 alt text http://img230.imageshack.us/img230/407/settingskm3.jpg

如果安全性不是一个大问题,也许在应用程序池下运行现有网页是有意义的,在服务帐户凭据下运行。记得将服务帐号添加到工作进程组,并关闭集成身份验证功能。

我从过去的经验中了解到,通过将全局组添加到本地组中并可能授予该本地组在服务器上的权限,通常更健壮且可维护。但现实世界有时是混乱的,这当然并不总是实用或最佳解决方案。

我希望这能回答你的一些问题,但我不认为它会回答所有问题。如果有特定领域您想了解更多信息,如果我能回答,我很乐意提供帮助。

最好的问候 日韩

【讨论】:

    【解决方案2】:

    模仿在这里没有帮助吗?您可以以您正在谈论的服务帐户用户的名义运行那段代码(表单),然后浏览器控件应该在相同的上下文中运行。

    以下链接可能会有所帮助;

    http://msdn.microsoft.com/en-us/library/b80a7e92.aspx

    http://www.buro9.com/blog/2006/10/06/impersonating-a-user-in-c/

    【讨论】:

    • 不幸的是,模仿似乎没有帮助。模拟工作(基于提到的博客中的代码 sn-p)但 IE 浏览器控件忽略模拟,并且仍然使用底层 AD 用户对我的 MOSS 站点进行身份验证,即使在模拟后实例化了控件。
    【解决方案3】:

    我的理解是,您应用程序中的 IE 控件将根据 Windows 会话中的凭据自动登录到 MOSS 站点。您希望它始终使用您指定的帐户并编码到应用程序中?

    IE 使用一种 Kerberos 身份验证(Windows 集成身份验证)自动登录到域站点

    三个建议;

    • 不要使用 MOSS 站点的 WINS 名称,而是使用 IP 地址(也可以使用 DNS 名称,例如不是http://moss-server,而是http://moss-server.domain.com)。这 应该会导致 IE 无法自动登录网站。
    • 将 Web 服务器上的身份验证模型更改为使用 Basic 仅限(安全警告 - 明文 密码交换)
    • 禁用“启用集成 Windows”选项 Web 浏览器中的“身份验证”。 这将使访问任何网站 在这个领域很痛苦......

    我的推荐是第一个。使用不同的地址让 IE 认为它没有访问受信任的站点,因此不使用集成身份验证。

    所有都可以在应用程序之外使用 IE 进行测试。只需启动 IE 并输入您正在使用的 MOSS 站点的地址。如果你被要求输入密码,你有你的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-08
      • 2010-12-08
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多