我有一個內置的,現在具有存儲用戶憑據訪問另一個系統的需求的Web應用程序。 (儘可能多的我想不是做到這一點,很不幸我在這件事上沒有選擇。)在數據庫中安全地存儲用戶憑據,PHP的Web應用程序
我的web應用程序通過LDAP與Windows域控制器接口來驗證用戶帳戶。所以,當用戶登錄到我的應用程序時,應用程序將檢查LDAP以確保它們是有效的用戶,並且他們的密碼是正確的。一旦通過身份驗證,用戶的雜項數據就會從MySQL數據庫中加載。
現在,我需要存儲用戶名和密碼在此數據庫這個其他系統不知何故,我正在探索的最安全的方式做到這一點。
一種方法我已經考慮了加密證書使用用戶的域密碼,這個其他系統(如LDAP驗證)作爲加密密鑰。這樣,如果某人以某種方式獲得了數據庫,那麼它就沒有多大用處,因爲每個記錄都將用不同的(有希望的)密鑰加密,並且該密鑰不會出現在任何地方的Web應用程序中。此方法的問題在於,當用戶更改其密碼時,其他系統保存的憑證不再有效。然後,我將不得不再次提示輸入其他系統憑據。如果沒有其他方法,我並不反對這樣做。
有什麼想法?感謝您的時間。
編輯:我剛剛想到的其他一些內容是基於LDAP的其他一些數據進行加密。一個看起來有希望的值(也可能對域中的任何人不安全)是objectGUID
,我認爲這是該帳戶的GUID。我可能會使用這個加密密鑰。這是很容易找到域用戶或其他人?
編輯#2:我發現任何域用戶都可以通過LDAP輕鬆查找GUID,所以我決定使用這種方法。除非有其他建議,否則我可能需要根據用戶密碼進行加密。
是的,那是我走下的第一條路。它確實支持SSO,如果我們從公司購買一個模塊,就可以獲得鉅額資金。食物鏈上的人們說不。可悲的是,我也無法在不損害我們的支持合同的情況下進行破解。 – Brad 2011-02-04 15:56:20
我也應該注意到SSO並不完全是我想要實現的。我需要用戶的憑據從這個其他系統提取一個Feed。我不關心他們必須登錄兩次,但是,我同意你的看法。 – Brad 2011-02-04 15:59:58