【问题标题】:Remotely authenticating client Windows user on demand按需远程验证客户端 Windows 用户
【发布时间】:2009-11-14 11:57:12
【问题描述】:

假设我正在为特定的网络协议编写服务器。如果我知道客户端在 Windows 机器上运行,我的服务器是否可以验证拥有独立于相关网络协议发起连接的客户端进程的 Windows 用户?

基本原理

我其实想写一个 FTP 代理服务器。客户端将使用他们想要的服务器用户名和伪造的密码连接到代理。然后,代理将对运行 FTP 客户端的 Windows 用户进行身份验证(通过 FTP 协议之外的某种机制)。在对 Windows 用户进行身份验证后,代理将确定该 Windows 用户是否可以作为他们通过其 FTP 客户端提供的用户名连接到真实的 FTP 服务器。

条件

  • 客户端和代理都在同一个防火墙内,并且没有客户端隐藏在 NAT 后面(允许代理在必要时连接回客户端)。

【问题讨论】:

    标签: authentication authorization windows-authentication


    【解决方案1】:

    微软试图让这变得困难。他们不希望程序在没有凭据的情况下进行身份验证。

    您必须插入身份验证框架并让系统相信您确实是身份验证的来源。请参阅“Lsa”函数。

    在此处查看开源 ssh 服务器的源代码以了解您的选择。

    当然,如果你真的有凭据,你可以合法地插入到框架中。

    如果连接的另一端是 Windows 机器,您可以通过 Kerberos 获取凭据并使用 SSPI API。我推荐this book

    【讨论】:

    • 感谢您的回答!但是,我想我不是很清楚。我可能会感到困惑,所以请多多包涵……我假设打开到代理的连接的进程的所有者已经在 他们的 计算机上进行了身份验证。因此,我只想让代理知道 哪个 用户拥有该进程。我想我真的在寻找一种方法让代理询问客户端的计算机,“哪个用户打开了这个连接?”以值得信赖的方式。我应该提到这些是非本地用户(用户通过 Active Directory 在他们的计算机上进行身份验证)。不过再次感谢! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 2012-05-09
    • 2018-02-12
    • 2014-07-16
    相关资源
    最近更新 更多