2

我正在尝试将隔离的非域连接系统连接到 Active Directory 域中包含的文件共享。最终,我需要能够使用计划任务将文件从隔离系统备份到域连接的文件共享。我有一个额外的要求,我不能存储密码,文件共享不能接受匿名连接。

为了解决这些问题,我从我们的 CA 创建了一个 X509 证书,用于客户端身份验证。我已经在个人证书存储中为我用来运行我的程序的用户帐户安装了证书。我还将此证书链接到 Active Directory 中的用户帐户。

简单地运行安装了证书的工具会失败,我遇到的一切都是:

  1. 只提供用户名/密码认证方案
  2. 需要实现中间人服务
    • 使用 WCF 连接
    • 通过WebRequest.Create()正确配置的 IIS 服务器的 HTTPS 连接

有没有办法让系统使用存储的证书(或任何非基于密码的方法)进行身份验证,以便直接访问文件共享?由于系统的性质,封闭源外部库也不是一种选择。不过开源库还可以。

附带说明一下,我们有多个系统需要在其中进行设置,并且在其中几个设置中,NetApp 8.2.1 用于文件共享服务器。最好的解决方案不依赖于这一事实,因为并非我们的所有系统都使用 NetApp,但部分修复总比没有修复好。对于那些不熟悉 NetApp 的人来说,这意味着除了作为标准的 SMB Windows 共享之外,它还可以作为 NFS 共享等进行访问。

4

1 回答 1

0

听起来您在这里选择了一个特别棘手的问题。我无法提供解决方案,但我可以提供建议 - 考虑 Kerberos 身份验证。

Kerberos 允许您做的一件事是在合适的身份验证服务器上生成身份验证令牌 - 称为服务主体名称 (SPN)。Active Directory 是一个基于 Kerberos 的系统。您应该会发现您可以从 AD 中导出 SPN,使用setspn- 将其保存到文件中,然后kinit在客户端上使用以加载该文件并将其用于身份验证。

这应该适用于 CIFS 和 NFS。

恐怕我不能说得更具体了——我已经有一段时间没有做这样的事情了,不想让你走错方向。您可能还需要在 AD 中创建一个“假装”机器帐户,以生成客户端 SPN。

“域加入”所做的部分工作是在 Unix 或 Windows 客户端上配置 Kerberos 密钥表,这基本上是“机器帐户”身份验证令牌。您实际上不需要这样做,而是应该能够导出机器帐户密钥表并使用它。

于 2014-09-20T22:17:00.790 回答