我们正在Windows上构建一个系统,我们集中(服务器)需要对本地文件或远程smb资源进行fopen。这个想法是在进行fopen之前对远程资源进行身份验证(使用unc路径)。 我们需要使用在该远程共享上为此资源提供的用户(客户端应用程序)的凭据进行身份验证。我们不想复制任何资源。
使用Win Net Api可以顺利运行,因为它存储了给定的凭据,以便后续相同或不同进程中的fopens成功。
但是有一个问题: 当您尝试连接到具有不同凭据的smb共享时,许多人可能从Windows知道以下消息,然后用于以前的连接: "不允许同一用户使用多个用户名与服务器或共享资源建立多个连接。断开之前与服务器或共享资源的所有连接,然后重试。" 请参阅http://support.microsoft.com/kb/938120了解已定义的限制和可能的解决方案"。
由于我们有一个作为服务运行的中央服务器应用程序('本地系统'帐户),我们已经有了两个不同的用户:)。 关闭先前建立的连接以允许第二个连接不是一个选项(正在进行的处理)。
另一方面,窗口缓存身份验证信息非常棒,另一方面,它太有限了。 修改每个用户的hosts文件看起来不太好。 使用smb客户端库(如libsmb ++,impacket)似乎不是解决方案,因为我们需要" over process"认证。 配置" master" smb共享用户也不想要。 也许通过Windows用户auth令牌是一种方式吗?
这个问题具有普遍性(即独立于语言),我确信有人在那里解决它(以一种或多或少的优雅方式;)) 我希望我的解释是可以理解的。
提前感谢任何提示。 费利克斯