Мне поручили изменить приложение WinForms для проверки того, что вошедший в систему пользователь принадлежит определенному домену.
Вот что я придумала до сих пор:
byte[] domainSid;
var directoryContext =
new DirectoryContext(DirectoryContextType.Domain, "domain.se");
using (var domain = Domain.GetDomain(directoryContext))
using (var directoryEntry = domain.GetDirectoryEntry())
domainSid = (byte[])directoryEntry.Properties["objectSid"].Value;
var sid = new SecurityIdentifier(domainSid, 0);
bool validUser = UserPrincipal.Current.Sid.IsEqualDomainSid(sid);
Есть ли лучший / более простой способ сделать это?
Мне кажется, что domainSid был бы доступен каким-то образом с использованием PrincipalContext или другого класса в System.Security.Principal.
Я подумал об использовании жестко закодированной SID-строки, но я не знаю, насколько это "правильно".