【问题标题】:How can I do NTLM Windows Auth over the internet?如何通过 Internet 进行 NTLM Windows 身份验证?
【发布时间】:2012-03-19 16:01:17
【问题描述】:

我有一个 WPF 客户端,它使用 Windows 身份验证与 WCF 对话。

当人们在域中时,它可以很好地传递凭据,但当他们通过 Internet 使用客户端时则不行

  ClientBase.Credentials = OnNetwork ? CredentialCache.DefaultCredentials : new NetworkCredential(tbxUsername.Text, pbxPassword.SecurePassword);

这样做的正确方法是什么?

【问题讨论】:

  • 如果我需要添加更多信息或任何内容,请告诉我。我只是想通过互联网从 wpf 应用程序进行 Windows 身份验证
  • 不,这就是我想要摆脱的……但谢谢
  • 你得到什么样的错误? WCF 通过网络输出什么?它是否试图进行身份验证?这在 NTLM 处理中有多远?您可以发布提琴手或wireshark跟踪吗?
  • 没有错误我从 IIS 得到 401,因为我打开了 Windows 身份验证。 IIS 无法使用我传递的凭据验证我是否为域用户。
  • 能否请您显示客户端app.config的相关部分?

标签: wpf wcf authentication ntlm


【解决方案1】:

您或许可以使用 ADFS 2.0 + Windows Identity Foundation。看到这个:http://blogs.msdn.com/b/appfabriccat/archive/2010/12/14/ad-fs-2-0-to-secure-wcf-and-workflow-services-hosted-in-windows-server-appfabric.aspx

那篇文章讨论了托管在 Windows Azure 中的 WCF 服务,但您应该能够应用相同的主要思想。

【讨论】:

  • 这似乎是保护 WCF 的另一种方法,但我希望使用 NTLM。
【解决方案2】:

我认为非常正确的解决方案是 @Jeff 指出的 Windows Identity Foundation。

NTLM 身份验证已被 Microsoft 自己弃用(请参阅 MSDN 上的 this article)。此外,Windows Server 2008(及更高版本)中的 NTLMSSP 为 disabled by default

无论如何,要使用 NTLM,您必须在 IIS 主机上启用 IWA,开始阅读Microsoft Technet 上的这篇文章以了解如何使用(对于 IIS 7,this one 也是如此)。

请查看 MSDN 了解更多详细信息,但作为快速概述,您可以查看这篇文章(按重要性顺序):

【讨论】:

  • 谢谢,但我已经在 IIS 上运行它,这就是传递默认凭据在域上工作的原因。我对使用除 Windows 身份验证之外的任何东西不感兴趣。
  • 是的,列表的前两个链接应该适合您的情况
  • 第一个链接仅说明如何设置服务器。我已经有这个工作了,它必须是 ntlm + windows 身份验证。如果您未登录域,第二个链接不会显示如何执行此操作。这需要在未登录域时工作。以下是适用的服务器 Web 配置以澄清:
猜你喜欢
  • 1970-01-01
  • 2016-03-24
  • 2015-03-14
  • 2018-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
相关资源
最近更新 更多