3

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

我们怎样才能使这项工作?

4

3 回答 3

2

您指向的网站在哪个 Internet Zone 下运行?即使您使用自己的浏览器控件,它仍然会在某个区域中。通过使用普通浏览器转到相关站点来确定它是什么区域,并确定它在哪个区域。
替代文本 http://img219.imageshack.us/img219/7162/internetzonenp8.jpg

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

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

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

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

最好的问候 Rihan

于 2008-12-01T15:54:59.157 回答
0

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

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

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

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

于 2008-11-06T18:11:08.413 回答
0

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

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

三个建议;

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

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

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

于 2008-11-28T17:45:42.633 回答