Active Directory: Retrieve User information

前端 未结 5 1053
温柔的废话
温柔的废话 2020-12-13 11:30

I\'ve got a web application that is running against Windows Authentication using our Active Directory. I\'ve got a new requirement to pull some personal information through

5条回答
  •  醉酒成梦
    2020-12-13 11:53

    Accessing the user directly through a DirectoryEntry seems like the most straightforward approach. Here are some AD-related tidbits I learned from my first AD-related project:

    • In a URI, write LDAP in lowercase. Otherwise you'll get a mystery error. I spent more than a day on this depressing issue...
    • To clear a single-valued property, set it to an empty string, not null. Null causes an exception.
    • To clear a multi-valued property, use the DirectoryEntry.Property.Clear() method.
    • The Active Directory schema reference will say which data type a value will be and whether it is multi-value or single-value.
    • You do not need to manually RefreshCache() on a Directoryentry but if you ever use it and specify which properties to cache, know that it will not auto-retrieve any other properties in the future.
    • A COMException can be thrown at absolutely any time you use the classes in System.DirectoryServices. Keep an eye on those try blocks. Do not assume anything is safe.

    You'll probably need to use DirectorySearcher to get your user's directory entry if you don't know its path (which you wouldn't, just by having him logged in). Using it was fairly easy but beware of the quirks in LDAP syntax; namely, having to encode non-ASCII (and other?) characters. The search string you'd use would probably be something like: (&(sAMAccountName=whatever)(class=user)). This is off the top of my head and may be slightly incorrect.

    The Active Directory schema reference will be useful. Do understand that the schema can be modified and extended (e.g. installing Exchange will add mailbox information to users).

    AD Explorer is a useful tool which you can use for debugging and low-level AD data management. I've found it useful when I know which property I want to set but cannot find the right dialog box in the AD management tool.

提交回复
热议问题