WindowsIdentity — разница между группами и утверждениями

Я пытаюсь проверить, принадлежит ли пользователь к каким-либо группам, используя 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));

person Just Shadow    schedule 18.03.2021    source источник
comment
Если вы хотите проверить принадлежность конкретного пользователя к некоторым группам по SID, это поможет вам.   -  person Abdul Wahab    schedule 18.03.2021


Ответы (1)


Существуют различия между группами и утверждениями.

  • Группы работают с WORKGROUP и AD
  • Утверждения работают со службами федерации Active Directory

Утверждения — более сложный способ проверки личности пользователя, поскольку утверждения существуют не только для ADFS, вы можете использовать или создавать дополнительные поставщик токенов утверждений

Когда мы вызываем метод Groups для WindowsIdentity, у нас есть ограничение:

// Игнорировать отключенные группы, идентификатор входа в систему и только запрещенные группы.< /а>

Роль претензий

В модели удостоверений на основе утверждений утверждения играют ключевую роль в процессе федерации. Они являются ключевым компонентом, с помощью которого определяются результаты всех веб-запросов на проверку подлинности и авторизацию. Эта модель позволяет организациям стандартизированным образом безопасно проецировать цифровые удостоверения и права или требования, выходящие за рамки безопасности и предприятия.

Итак, если вы работаете только в NTLM — вы можете безопасно работать с группами, но если вы хотите работать через федерацию (например, SharePoint, Google и т. д.) — вы должны использовать претензии. Утверждения содержат группы, но группы не содержат утверждений.

Для того, чтобы ответить на вопрос, почему вы не видите ту или иную группу, нужно знать ее свойства и местонахождение. Как я писал выше и давал ссылку, есть ограничения на получение списка групп. Но здесь я нашел эта информация:

SID Name Description
S-1-5-32-544 Administrators A built-in group. After the initial installation of the operating system, the only member of the group is the Administrator account. When a computer joins a domain, the Domain Admins group is added to the Administrators group. When a server becomes a domain controller, the Enterprise Admins group also is added to the Administrators group.

Итак, если ваша локальная группа администраторов отключена - вы не можете ее увидеть, когда получаете ее через WindowsIdentity, даже если пользователь включен в нее.

person Maxim    schedule 22.03.2021