2009-09-08 43 views
0

比方說,我們有一個應用程序具有許多功能,並且每個功能都作爲允許使用該功能的用戶權限集。該應用程序設計爲始終開啓,但在白天的不同時間,我們希望不同的用戶登錄並使用它。我們希望使用內置的Windows用戶帳戶(用於身份驗證)和Windows組(用於功能訪問),而不是重新發明輪子並創建另一個另一個用戶帳戶和密碼系統。應用程序運行時可以更改登錄(Windows)用戶嗎?

是否有可能讓應用程序運行,但有不同的用戶來登錄並註銷應用程序的而不註銷Windows會話?

+0

也許使用LogonUser(http://msdn.microsoft.com/en-us/library/aa378184(VS.85).aspx)和ImpersonateLoggonOnUser(http://msdn.microsoft.com/en-us/庫/ aa378612(VS.85).aspx)與自定義GINA? –

回答

2

有一種機制叫做Impersonation(鏈接指向.NET文檔,但core Windows APIs提供了類似的功能)。它允許您以編程方式在與當前登錄的用戶不同的用戶的上下文中運行代碼。但是,您所描述的模型存在其他安全隱患。特別是:你如何保護程序運行的其他工作站?

+0

感謝您的鏈接 - 這裏有一些很好的示例代碼:http://msdn.microsoft.com/en-gb/library/system.security.principal.windowsimpersonationcontext(VS.80).aspx。 –

0

那麼,你當然可以讓應用程序獲得用戶的Windows憑據。您也可以在不請求任何憑證的情況下簡單查詢組成員資格。更具體的信息將有助於更具體的答案。例如,你在用什麼語言工作?

相關問題