我剛開始學習WCF,我需要用Winforms編寫一個聊天程序。如何使用Windows權限機制?
我需要創建一個具有使用該聊天程序的權限的本地用戶組(Windows)。不在組中的用戶不能使用它。 我已經閱讀過關於它的內容,但我仍然不明白我需要在服務器端爲此自動化做什麼,以及如何確保只有來自此特定組的用戶纔有權限。
我剛開始學習WCF,我需要用Winforms編寫一個聊天程序。如何使用Windows權限機制?
我需要創建一個具有使用該聊天程序的權限的本地用戶組(Windows)。不在組中的用戶不能使用它。 我已經閱讀過關於它的內容,但我仍然不明白我需要在服務器端爲此自動化做什麼,以及如何確保只有來自此特定組的用戶纔有權限。
這似乎是你在找什麼,雖然我反覆警告,這種做法將只有一個域範圍內工作(這通常意味着它只能是很好的企業內部網):
WCF Web Service Authentication based on AD groups
的接受的答案演示如何捕捉使得對服務請求的用戶的安全上下文,通過鑽入這個對象來確定組成員:
WindowsIdentity caller = ServiceSecurityContext.Current.WindowsIdentity;
你可能會需要使用wsHttp或網Tcp綁定(與基本的HTTP綁定相對)使其發揮作用 - 這些綁定機制提供了更多功能,以減少與其他平臺的互操作性。如果你嚴格地「在防火牆內」,netTcp綁定通常更有意義,儘管它可能使用防火牆默認阻塞的端口。 wsHTTP使用通常打開的標準HTTP端口。
在客戶端,System.Security.Principal命名空間中還有等效的對象,這些對象也允許您在那裏執行安全策略。
你打算部署這個,還是在一個組織中使用它?無論哪種方式,你正在採取的方法聽起來很難支持......如果它在一個單一的組織內,我會讓系統管理員手動處理它,而不是試圖從代碼設置它。如果是用於部署,通過使用傳統的用戶登錄或綁定到Azure AD進行身份驗證,您可能會獲得更好的運氣。 –
我知道這是服務授權和web.config上的行爲,也許會話。 –
我確定WCF包含該功能,但請注意,使用這樣的組只適用於單個域(即 - 工作區網絡)。人們通常在自己的個人電腦上擁有管理權限,因此他們可以將自己添加到他們想要的任何組中,並且如果計算機與服務器不在同一個域中,那麼我認爲他們是不同的「組」,即使本地組具有相同的名稱。在客戶端,這些東西都將在System.Security.Principal命名空間中,如果有幫助的話。您可以使用這些類來檢查用戶的安全組。 –