2009-10-12 207 views
2

我正在開發的C#應用​​程序需要爲應用程序的任何用戶(例如應用程序首選項,權限等)存儲一些元數據。我們正在使用AD進行授權/驗證。在AD帳戶的數據庫中存儲SID或用戶名?

將SID或DOMAIN /用戶名存儲在應用程序數據庫中以識別AD帳戶是否更好?

回答

2

我做這個左右逢源......

  • 如果存儲的SID,那麼你就可以在不破壞應用程序重命名帳戶,但它不是人類可讀。
  • 如果您存儲用戶名,那麼它很容易閱讀,但如果帳戶被重命名,則必須更新數據。
+0

對於我的特定項目,我決定存儲用戶名。主要原因是因爲這個初始版本需要在數據庫中直接編輯。 在某些時候我會寫一個帳戶管理屏幕,目的是遷移到使用SIDs – eyesnz 2009-11-16 22:10:16

3

我會存儲SID,並在/如果需要顯示與該帳戶關聯的名稱時使用LookupAccountSID。

+0

我想在我的數據庫表中存儲SID和用戶名。我可以在我的SID列中選擇哪種DBType? ** SecurityIdentifier.Value **是否可以轉換爲** uniqueidentifier **?或者最好將SID存儲爲字符串? – user3373603 2016-08-16 03:55:06

+0

我可能會用一個字符串去。 – 2016-08-16 05:57:54

2

我們已經構建了一個小類來連接兩個並且僅在sid上進行比較。格式類似於下面的字符串:

"Domain\\User\nS-1-5-21-...........-1129" 

這樣我們就可以在數據庫和調試器「友好」的名稱,但所有綁定實際上是對價值的SID一部分。

當您更改用戶名稱時,會發生什麼情況?數據是陳舊的,並保持這種方式:)

順便說一句,如果你這樣做,確保你不能讓'顯示名稱'出對象,因爲你不希望它顯示爲因爲它可能是陳舊的用戶。而應提供一個LookupUserName()例程,以將SID的正確解析度轉換爲帳戶名稱。

最後,一定要存儲SID,但是你這樣做。你不想存儲JDoe,當Jane退出時,約翰一個月後開始他突然有訪問權?

相關問題