Какое поле Active Directory я использую для однозначной идентификации пользователя? - PullRequest
18 голосов
/ 16 декабря 2009

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

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

Обновление

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

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

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

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

Ответы [ 4 ]

7 голосов
/ 16 декабря 2009

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

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

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

2 голосов
/ 16 декабря 2009

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

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

0 голосов
/ 16 декабря 2009

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

HttpContext.Current.User.Identity.Name

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

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

0 голосов
/ 16 декабря 2009

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

...