Получение информации о Active Directory при использовании проверки подлинности Windows?
Я использую проверку подлинности Windows в своем приложении asp.net MVC 3.
Есть ли способ получить информацию о пользователях из активного каталога?
Я знаю, что могу использовать User.Name.Identity, и это работает для имени входа.
Но как насчет получения имени пользователя, фамилии и даже описания или офиса из активного каталога. Возможно ли это через .net?
Ответы
Ответ 1
Конечно!! Если вы используете .NET 3.5 или выше, на самом деле это довольно легко.
В основном, используйте пространство имен System.DirectoryServices.AccoutManagement(прочтите все здесь: Управление принципами безопасности каталога в .NET Framework 3.5).
Затем: вам нужно "найти" пользователя и захватить его свойства - используйте код примерно так:
// create domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// find the user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "username");
if(user != null)
{
// access the user properties in a nice, object-oriented way
}
Ответ 2
Если ваш код работает в контексте пользователя, для которого вам нужна информация, он становится еще легче (например, проверка подлинности Windows):
//Must reference System.DirectoryServices.AccountManagement
var user = UserPrincipal.Current;
var firstName = user.GivenName;
var lastName = user.Surname;
Ответ 3
Похоже, вы можете использовать пространство имен System.DirectoryServices
. Ниже приведено руководство о том, как вы можете читать свойства объекта Directory.
Ответ 4
В моей среде мне пришлось добавить это в раздел в Web.config:
<identity impersonate="true" />