我正在編寫管理nginx(域,重寫等),svn和其他服務的面板。爲此,我正在編寫將在root上工作的後端(更改nginx配置,重新加載它們,更改用戶密碼等)以及客戶端(控制檯客戶端和Web應用程序)。使用python後端的客戶端授權
應用程式適用於Unix套接字,和我做了非常簡單的協議吧:
\0\0\0\0user\0key\0module\0command\0data\0
好了,這是很簡單的。客戶端發送命令和數據到後端,例如:
\0\0\0\0morsik\0\0nginx\0add_domain\0www.domain.tld something\0
問題是,如何驗證用戶真的是morsik?對於Web界面,我不必 - 網頁有自己的授權,所以我可以發送一些密鑰,這將適用於任何人都不知道的用戶。 問題是如果有人有權訪問ssh。然後他可以編寫簡單的客戶端來欺騙用戶名,然後他可以更改其他用戶配置。
那麼,我怎樣才能爲用戶做出正確的授權?
你可能想學習書「應用密碼學」,由布魯斯,第一。很有可能你必須使用同一個密鑰的HMAC。 – Keith
HMAC看起來很有趣,但如果密鑰會被公衆所知,那麼欺騙數據仍然存在。因爲這是python腳本,所以必須公開...或者有其他方法來存儲密鑰? – morsik
讀這本書。 ;-) – Keith