【问题标题】:Certificate based authentication to file share基于证书的文件共享身份验证
【发布时间】:2014-09-15 21:59:15
【问题描述】:

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

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

仅在安装了证书的情况下运行该工具会失败,而我遇到的所有问题:

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

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

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

【问题讨论】:

    标签: c# .net-4.0 x509 netapp


    【解决方案1】:

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

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

    这应该适用于 CIFS 和 NFS。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-02
      • 2021-12-11
      • 2018-02-24
      • 1970-01-01
      • 1970-01-01
      • 2017-01-23
      • 1970-01-01
      • 2014-12-22
      相关资源
      最近更新 更多