簡體   English   中英

多種OS用戶身份驗證技術的方法和建議

[英]Approaches and recommendations for multiple OS user authentication techniques

我正在尋找有關如何驗證用戶/密碼組合以及在多個不同的操作系統上驗證組關聯的建議。 基本上,我有一個同時在MS Visual Studio C#和Mono C#中都可以使用的C#應用​​程序,我需要向其添加身份驗證機制以支持Windows,Linux和MacOSX。

對於Windows,我編寫了一個快速的C#互操作以使用僅Windows的LogonUser API。 這運作良好,但不適用於Windows以外的系統。 我的最終目標是在所有平台(Windows,Linux和MacOSX)上運行同一組代碼,並盡可能減少與OS相關的#ifdefing。

注意事項–我正拼命使用固有的OS用戶帳戶。 我不想保留自己的用戶帳戶存儲。

歡迎對方法,用戶身份驗證技術等有任何想法或建議。

我不確定身份驗證在Linux和Mac上如何工作,但是我想到的第一件事是實現IAuthenticator接口並具有特定於操作系統的身份驗證器類。 然后,您可以通過Dependecy Injection手動切換到適當的類,或者可以在運行時動態切換到適當的類...但是您的應用程序應該能夠以某種方式識別當前正在運行的操作系統。

每個系統處理本地身份驗證的方式不同。 如@Darnell所述,您可能需要編寫一個用於身份驗證的接口,並隱藏系統特定的后端。

如果您需要在多個系統上使用相同的用戶帳戶,則ldap可以獲取用戶信息,而kerberos可以進行身份​​驗證是唯一完全支持的跨平台處理方式。

缺少對應用程序進行“內核化”,並堅持只在等效環境中運行,沒有通用的身份驗證方法。 此外,LDAP確實是查詢組信息的唯一可移植方式。

一個更簡單(更便於移植)的選項可能是使用某種預共享密鑰。 這樣,用戶將通過給程序一個用於簽名消息的密鑰來僅授權您的程序。 將消息與用戶的相應密鑰進行對照,將使您知道a)用戶在本地存在,b)消息來自用戶授權的來源。 您仍然有無法進行通用組查找的問題,但是如果您不能依靠ldap,則可能需要自己進行查找。

注意:我仍然要強調以下幾點

我強烈建議您永遠不要在消息中使用某人的密碼,即使這需要您維護自己的用戶/密碼數據庫。 您將規避本地安全范式,並向更多的安全風險開放系統。 如果系統使用的是kerberos / ActiveDirectory,則這一點尤為重要,在其中已花了很長的時間來確保永遠不會通過網絡傳輸用戶密碼。 以DBMS為例-它們中的大多數不綁定到本地用戶數據庫(至少默認情況下),而是實現自己的用戶身份驗證機制。 查看安全性在MySQL或PostgreSQL中的工作方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM