Active-Directory
有人如何限制對 Active Directory 上某些使用者屬性的讀取權限?
我們使用此程式碼查詢 ADAM 實例。
DirectoryEntry adRoot = new DirectoryEntry(ConfigurationManager.AppSettings["LdapConnectionString"].ToString()); DirectorySearcher adSearch = new DirectorySearcher(adRoot); adSearch.Filter = "(&(objectClass=user)(objectCategory=person))"; SearchResultCollection searchResults = adSearch.FindAll(); return searchResults;
這是在 App.config 中的標記中:
add key=“LdapConnectionString” value=“LDAP:// servername:portnumber /dc= domainname "
我們使用程式碼列印出我們從 ADAM 實例檢索的所有屬性名稱.
DirectoryEntry entry = searchResults[0].GetDirectoryEntry(); foreach (string property in entry.Properties.PropertyNames) { Console.WriteLine(property); }
PropertiesToLoad 為空 StringCollection,PropertyNamesOnly 為 false。
我們不會檢索程序所需的 proxyAddresses、街道、郵政編碼和許多其他屬性。
我在這裡發現:
如果未指定屬性列表,則搜尋將返回目錄中訪問控制集允許的所有屬性的值。
所以,我的問題……這個訪問控制集在哪裡,我們將如何修改它以便我們可以訪問這些屬性?
使用 ADSIEdit,你可以破壞東西,所以要小心。(http://technet.microsoft.com/en-us/library/cc773354%28WS.10%29.aspx )
我從來沒有去那麼深,它有點被埋沒了。您打開 ADSIEdit 並找到您想要查看的對象(或整個容器/OU),右鍵點擊並轉到“屬性”。
點擊安全選項卡,點擊“高級”按鈕,點擊“編輯”以查看您可以執行的操作(暫時不要進行任何更改)。您將看到標準權限,例如“完全控制”或“修改所有者”,以及上面應用“僅限此對象”的權限
您所在的位置還有另一個選項卡“屬性” - 所有好東西都在其中。“讀取業務角色”和“讀取代理地址”等等。
您可以添加一個新組,在其中勾選您喜歡的框,將其應用於整個容器或 OU,您應該一切順利。