Подтвердить что ты не робот

В каком поле Active Directory я использую уникальную идентификацию пользователя?

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

Как насчет Guid? Guid будет казаться очевидным выбором, но я ничего не знаю об этом. Почему он обнуляется? Изменяется ли это значение? Для чего он используется?

Update

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

Ответ 3

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

HttpContext.Current.User.Identity.Name

Это возвращает Domain/Username пользователя. Я работал над корпоративными веб-приложениями, которые использовали это для целей аудита. Мне было бы интересно узнать, считаете ли вы, что это недостаточно для ваших целей.

Также я не уверен, почему вы хотите сохранить SID или GUID пользователя, так как его очень трудно прочитать по сравнению с доменом/пользователем при просмотре журналов аудита.

Ответ 4

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