У меня есть приложение ASP.NET, которое работает в нашей интрасети. В производственной среде я могу получить пользователя из контекста домена и получить доступ к большому количеству информации, включая его имя и фамилию (UserPrincipal.GivenName и UserPrincipal.Surname).
Наша тестовая среда не является частью рабочего домена, и тестовые пользователи не имеют учетных записей домена в тестовой среде. Итак, мы добавляем их как локальных пользователей компьютеров. Они запрашивают учетные данные при переходе на начальную страницу. Я использую следующий метод, чтобы получить UserPrincipal
public static UserPrincipal GetCurrentUser()
{
UserPrincipal up = null;
using (PrincipalContext context = new PrincipalContext(ContextType.Domain))
{
up = UserPrincipal.FindByIdentity(context, User.Identity.Name);
}
if (up == null)
{
using (PrincipalContext context = new PrincipalContext(ContextType.Machine))
{
up = UserPrincipal.FindByIdentity(context, User.Identity.Name);
}
}
return up;
}
Проблема, с которой я столкнулся, заключается в том, что когда UserPrinicipal восстанавливается, когда ContextType == Machine, я не получаю свойства, такие как GivenName или Surname. Есть ли способ установить эти значения при создании пользователя (Windows Server 2008) или мне нужно пойти по-другому?