2013-02-28 5 views
1

У меня есть уникальное затруднение.Проверка учетных данных пользователя

Я разрабатываю класс, который будет проверять разрешение учетной записи пользователей, я рассмотрел большинство баз. Но в первую очередь меня интересует тестирование Null или SID.

Причины я обеспокоен является:

if(user != null) 
{ 
    role.IsInRole(WindowsBuiltInRole.Administrator); 
} 

Очевидно, что простая реализация для демонстрации, но будет ли WindowsBuiltInRole проверки строго на основании отдельной машины или против домена? Если пользовательская учетная запись домена действительно является администратором, будет ли она успешно протестирована?

Или лучший способ протестировать против пяти или шести доменов. Токены? SID? Будут ли другие учетные записи пользователей, такие как учетная запись сетевой службы , будут ли они работать одинаково? Что было бы лучшим способом обеспечить подлинность значения токена.

Любой вход был бы потрясающим.

ответ

1

Перечисление WindowsBuiltInRole точно соответствует Windows, SIDs, и точно хорошо kwown СВДС, связанные с Windows, встроенный в группе: Well-known security identifiers in Windows operating systems все SIDs начиная с 'S-1-5-32-.

Целочисленное значение значения перечисления соответствует последнему числу в sid, поэтому, поскольку WindowsBuiltInRole.Administrator равен 544, он соответствует S-1-5-32-544. Так что вы проверяете с помощью этого кода действительно, если пользователь принадлежит к группе администраторов:

SID: S-1-5-32-544

Имя: Администраторы

Описание: Встроенная группа. После первоначальной установки операционной системы единственным членом группы является учетная запись администратора.Когда компьютер присоединяется к домену, группа «Администраторы домена» добавляется в группу «Администраторы» . Когда сервер становится контроллером домена, группа администраторов также добавляется в группу «Администраторы».

+0

Это отличная статья, поэтому по умолчанию «BuiltInRole» сравнивает * Local Machine, Workgroup или Domain *, чтобы увидеть, к каким из них принадлежат «Роли»? Но физически используется «SID Token». – Greg

+0

Проверка выполняется в группе «Администраторы», поэтому она зависит именно от того, что в этой группе для компьютера, на котором вы запускаете код. Вот и все. Основным используемым API Windows является просто CheckTokenMembership http://msdn.microsoft.com/en-us/library/windows/desktop/aa376389.aspx с соответствующим SID. –

+0

Спасибо, я не знаю, как я пропустил это, когда искал ответы об идеальном способе справиться с этим. Вы заработали это, хотя. – Greg

1

По определению WindowsBuiltInRole Перечисления найдено по адресу:

WindowsBuiltInRole Enumeration

Роль WindowsBuiltInRole.Administrator действительно работает как для компьютера и домена без ограничений.

WindowsBuiltInRole.PowerUser сможет запускать приложения, но не может устанавливать и удалять их.

WindowsBuiltInRole.AccountAdministrator может управлять учетными записями и даже изменять права, но не вносить изменения в домене (как в распределенных развертываниях).

WindowsBuiltInRole.BackupOperator может переопределять ограничения безопасности для единственной цели резервного копирования или восстановления файлов.

WindowsBuiltInRole.Replicator поддерживает репликацию файлов в домене.

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

+0

Но как насчет других учетных записей 'BuiltInRole'? Будут ли они охватывать и «Домен»? – Greg

+0

Я расширил ответ, надеясь, что он будет удовлетворительным. Другие роли имеют некоторые привилегии, подобные администратору, а не все. – 2013-03-30 00:07:19