Я пытаюсь проверить, принадлежит ли пользователь к каким-либо группам, используя SID-ы.
Я использовал WindowsIdentity .Groups, но потом заметил, что иногда не показывает принадлежность пользователя к группе администраторов.
После некоторого поиска я обнаружил, что вместо этого WindowsIdentity.Claims работает нормально (включая группу администраторов в результаты).
Мне не удалось найти надлежащую документацию по Претензии.
Итак, в чем разница между группами и утверждениями в WindowsIdentity, и почему группы не показывают группу администраторов, а утверждения показывают?
И, наконец, могу ли я безопасно использовать утверждения вместо групп?
Вот код, который у меня есть:
var wi = WindowsIdentity.GetCurrent();
var sidToFind = "S-1-5-32-544"; // Hardcoded the sid of administrators group for demo, but in general this is a parameter of a function on my side
// This will NOT include the sid S-1-5-32-544
var groupSids= wi.Groups
.Where(item => item.Value == sidToFind);
// This will include the sid S-1-5-32-544 and also all the other results that Groups provides.
var claimSids = wi.Claims
.Where(item => item.Value == sidToFind));