Какое поле Active Directory я использую для однозначного определения пользователя?

У меня есть проект MVC Asp.net, аутентифицирующий через AD. Я хотел бы сохранить информацию об аудите в таблицах для зарегистрированного пользователя тока. Что я должен хранить в базе данных? Я в настоящее время использую SamAccountName для своих поставщиков членства и роли. Я должен использовать это? Я должен использовать более подробный и современный UserPrincipalName? Что, если мы в конечном счете заканчиваем тем, что использовали несколько доменов?

Что относительно Гуида? Гуид походил бы на очевидный выбор, но я ничего не знаю об этом. Почему это nullable? Это оценивает изменение? Для чего это используется?

Обновление

Согласно SID по сравнению с GUID...

Причина использования SIDs вообще и не GUID, для обратной совместимости. Windows NT использует SIDs для идентификации пользователей и групп в ACLs на ресурсах.

SIDs на самом деле изменится при перемещении пользователя в новый домен GUID останется постоянным. Это смотрит на меня как GUID, способ пойти, если Вы не намереваетесь аутентифицировать против сервера NT4 AD.

Я не уверен, что сделать здесь, поскольку я не могу принять свой собственный ответ в течение 2 дней. Большинство всесторонних побед объяснения?

18
задан Jim Mitchener 16 December 2009 в 01:13
поделиться

4 ответа

Согласно SID vs. GUID ...

Причина использования SID, а не GUID, заключается в обратной совместимости. Windows NT использует идентификаторы безопасности для идентификации пользователей и групп в списках управления доступом к ресурсам.

При этом я решил использовать GUID. SID фактически изменятся, если вы переместите пользователя в новый домен, GUID останется постоянным. Если вы не планируете запускать свое приложение на сервере NT4 AD, вам подойдет GUID.

7
ответ дан 30 November 2019 в 09:40
поделиться

Если вы используете ASP.NET MVC (или Webforms, если на то пошло) с проверкой подлинности Windows, почему бы просто не использовать имя пользователя, которое вы получаете из этого свойства:

HttpContext.Current.User.Identity.Name

Возвращает домен / имя пользователя. Я работал над корпоративными веб-приложениями, которые использовали это для целей аудита.

-1
ответ дан 30 November 2019 в 09:40
поделиться

Возможно, вы захотите использовать SID - это то, что в большинстве случаев использует сама ОС. SID также уникальны для разных доменов или рабочих групп.

Проблема только с именем пользователя заключается в том, что его можно изменить, тогда как SID является фиксированным.

2
ответ дан 30 November 2019 в 09:40
поделиться

samAccountName - это имя пользователя, с которым пользователь входит в систему. Немного более "полным" можно сделать и с помощью предисловия домена, но нет причин не использовать очевидное поле имени пользователя

.
-2
ответ дан 30 November 2019 в 09:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: