假设我正在为特定网络协议编写服务器。如果我知道客户端在Windows计算机上运行,我的服务器是否可以对拥有启动连接的客户端进程的Windows用户进行身份验证,而不受相关网络协议的影响?
原理
我其实希望编写一个FTP代理服务器。客户端将使用所需的服务器用户名和伪造的密码连接到代理。然后,代理将验证运行FTP客户端的Windows用户(通过除FTP协议之外的某种机制)。在验证Windows用户之后,代理将确定该Windows用户是否可以通过其FTP客户端连接到真实FTP服务器作为用户名。
条件
答案 0 :(得分:1)
微软试图让这件事变得困难。他们不希望程序在没有凭据的情况下进行身份验证。
您必须插入身份验证框架并说服系统您确实是身份验证的来源。请参阅'Lsa'功能。
请参阅开源ssh服务器的来源,了解您的选项。
当然,如果你真的有证书,你可以合法地插入框架。
如果连接的另一端是Windows框,则可以通过Kerberos获取凭据并使用SSPI API。我推荐this book。