我正在開發的C#應用程序需要爲應用程序的任何用戶(例如應用程序首選項,權限等)存儲一些元數據。我們正在使用AD進行授權/驗證。在AD帳戶的數據庫中存儲SID或用戶名?
將SID或DOMAIN /用戶名存儲在應用程序數據庫中以識別AD帳戶是否更好?
我正在開發的C#應用程序需要爲應用程序的任何用戶(例如應用程序首選項,權限等)存儲一些元數據。我們正在使用AD進行授權/驗證。在AD帳戶的數據庫中存儲SID或用戶名?
將SID或DOMAIN /用戶名存儲在應用程序數據庫中以識別AD帳戶是否更好?
我做這個左右逢源......
我會存儲SID,並在/如果需要顯示與該帳戶關聯的名稱時使用LookupAccountSID。
我想在我的數據庫表中存儲SID和用戶名。我可以在我的SID列中選擇哪種DBType? ** SecurityIdentifier.Value **是否可以轉換爲** uniqueidentifier **?或者最好將SID存儲爲字符串? – user3373603 2016-08-16 03:55:06
我可能會用一個字符串去。 – 2016-08-16 05:57:54
我們已經構建了一個小類來連接兩個並且僅在sid上進行比較。格式類似於下面的字符串:
"Domain\\User\nS-1-5-21-...........-1129"
這樣我們就可以在數據庫和調試器「友好」的名稱,但所有綁定實際上是對價值的SID一部分。
當您更改用戶名稱時,會發生什麼情況?數據是陳舊的,並保持這種方式:)
順便說一句,如果你這樣做,確保你不能讓'顯示名稱'出對象,因爲你不希望它顯示爲因爲它可能是陳舊的用戶。而應提供一個LookupUserName()例程,以將SID的正確解析度轉換爲帳戶名稱。
最後,一定要存儲SID,但是你這樣做。你不想存儲JDoe,當Jane退出時,約翰一個月後開始他突然有訪問權?
對於我的特定項目,我決定存儲用戶名。主要原因是因爲這個初始版本需要在數據庫中直接編輯。 在某些時候我會寫一個帳戶管理屏幕,目的是遷移到使用SIDs – eyesnz 2009-11-16 22:10:16