2010-01-14 137 views
2

我在服務器上有web服務!此服務正在從客戶端應用程序調用!從webservice中檢索客戶端用戶名和計算機名

現在我如何獲得使用此服務的客戶端的用戶名和計算機名稱,例如,如果從Clint1調用此服務的應用程序,我想獲取計算機名稱和用戶名Clint1?

非常感謝!

+0

如果客戶端使用Linux或移動電話,必須傳遞什麼用戶名和mashine名稱? – 2010-01-14 11:04:40

+0

感謝您的評論!這項服務將來自於Windows操作系統的客戶! – Comii 2010-01-14 11:47:45

回答

1

你不可靠,真的。

服務器變量REMOTE_HOST可能會提供給您,但在大多數情況下,它將是一個IP地址,它很可能是代理的IP地址。此外 - 這是可以輕易欺騙的東西。

用戶名(REMOTE_USER)也是如此,除非您使用某種WS-Security機制來驗證調用Web服務的用戶。

+0

感謝您的回答!此服務僅用於LAN中的客戶端! – Comii 2010-01-14 11:33:23

0

客戶必須將此信息傳遞給服務。

0

正如Wim所說,你無法可靠地獲得這些信息。爲了保證Windows網絡中可以使用服務器變量檢索當前認證的用戶(本機):

System.Web.HttpContext.Current.Request.ServerVariables("LOGON_USER") 

的REMOTE_HOST變量應該返回機器名稱,但在大多數情況下,(他說),它將只是一個IP地址。

即使在局域網上,這也不是一個可取的安全措施。這些信息仍然可以在本地欺騙,爲內部用戶提供僞裝成其他用戶的能力。如果它只是用於識別(而不是認證或授權),它可能會「足夠好」。如果您維護一個小型數據表(或網絡團隊),將每臺pc識別爲其預期的IP地址,則此信息將實現您想要的。