Раньше я использовал класс UserPrincipal для получения информации активного каталога о пользователе, в частности о EmployeeId (а не имени пользователя, мы обычно не используем его для привязки сотрудников к конкретным точкам данных в sql). Однако в ядре .net такого класса не существует, и я все еще довольно новичок в ядре .net, поэтому я не уверен, как много его функций работает в настройках интрасети. Я знаю, что многие, вероятно, не будут работать с кроссплатформенным ядром asp.net и другими типами серверов, не имеющих представления об активной директории.
Ниже приведен код, который я использую в обычной среде asp.net для получения идентификатора сотрудника.
var userContext = System.Web.HttpContext.Current;
PrincipalContext pcxt = new PrincipalContext(ContextType.Domain, "mydomain.com");
UserPrincipal uPrincipal = UserPrincipal.FindByIdentity(pcxt, IdentityType.SamAccountName, userContext.User.Identity.Name);
return uPrincipal.EmployeeId;
Какой код, если он есть, можно использовать для получения той же информации? Возможно ли это без сторонних библиотек? Кажется, что сервер IIS может транспортировать некоторую информацию, которая мне нужна через претензии? Я пытался проводить исследования, но каждая вещь просто приводит меня к новым направлениям исследований, и я не уверен, с чего начать.