2009-11-14 31 views
0

假設我正在爲特定網絡協議編寫服務器。如果我知道客戶機在Windows機器上運行,是否可以讓我的服務器對擁有客戶機進程的Windows用戶進行身份驗證,該用戶進程獨立於有問題的網絡協議而啓動連接?按需遠程驗證客戶端Windows用戶

理由

我其實希望寫一個FTP代理服務器。客戶端將連接到代理服務器所需的服務器用戶名和密碼。然後代理會驗證運行FTP客戶端的Windows用戶(通過除FTP協議以外的某種機制)。在對Windows用戶進行身份驗證之後,代理會確定該Windows用戶是否可以通過其FTP客戶端提供的用戶名連接到真實的FTP服務器。

條件

  • ,客戶端和代理將是相同的防火牆內,沒有客戶端將在NAT後面隱藏(允許在必要時代理連接返回到客戶端)。

回答

1

微軟試圖使這一點變得困難。他們不希望程序沒有憑據進行身份驗證。

您必須插入認證框架並說服系統確實是認證的來源。參見'Lsa'功能。

查看開源ssh服務器的來源以瞭解您的選項。

當然,如果你真的有證書,你可以合法地插入框架。

如果連接的另一端是Windows機器,則可以通過Kerberos傳輸憑證並使用SSPI API。我建議this book

+0

感謝您的回答!不過,我想我並不十分清楚。我可能會感到困惑,所以請耐心等待......我認爲打開與代理連接的進程的所有者已在其計算機上進行了身份驗證。因此,我只想讓代理知道哪個用戶擁有該進程。我想我真的在尋找一種方法讓代理向客戶的計算機詢問「哪個用戶打開了這個連接?」以可靠的方式。我應該提到這些是非本地用戶(用戶通過Active Directory在他們的計算機上進行身份驗證)。不過再次感謝! :) – 2009-11-15 00:30:59

+0

請參閱答案以外的內容。 – bmargulies 2009-11-15 16:45:51